Как по символьному значению даты и времени отрисовывать график только по дате?
Есть следующий Датасет:
Index Data
0 2017-05-08 21:46:36+00:00
1 2017-05-09 21:46:34+00:00
2 2017-05-10 21:46:34+00:00
3 2017-05-11 21:46:17+00:00
4 2017-05-12 21:46:17+00:00
Необходимо в колонке Data оставить только дату формата %Y-%m-%d
То есть, на выходе необходимо получить:
Index Data
0 2017-05-08
1 2017-05-09
2 2017-05-10
3 2017-05-11
4 2017-05-12
Ответы (2 шт):
Отдельно даты как типа в Pandas вроде бы нет, можно превратить дату-время в строку нужного формата:
df['Data'] = df['Data'].dt.strftime('%Y-%m-%d')
Ну либо так (как напомнил strawdog):
df['Data'] = df["Data"].dt.date
А если у вас там строки, а не даты, то попробуйте так:
df['Data'] = df["Data"].str.slice(0, 10)
Судя по дополнительной информации из комментариев, вы пытаетесь нарисовать график, используя в качестве значений по оси X строки, в которых хранится дата и время. Pandas не понимает на сколько отличается одна строковая дата от другой и поэтому на графике вы получите совсем не то, что ожидаете.
Приведите столбец Data к типу данных datetime64 и попробуйте начертить график средствами Pandas - скорее всего вы получите приемлемый результат, даже не обрезая компоненту времени.
df["Data"] = pd.to_datetime(df["Data"])
df.set_index("Date")["<column_name_to_plot>"].plot()
Пример:
In [134]: df = pd.DataFrame({"dt": ["2000-01-01", "2000-01-02", "2021-10-10"], "val": [1,2,3]})
In [135]: df.set_index("dt").plot()
Out[135]: <AxesSubplot:xlabel='dt'>
а теперь нарисуем тот же самый график, предварительно преобразовав столбец "dt" к типу данных datetime64:
In [136]: df["dt"] = pd.to_datetime(df["dt"])
In [137]: df.set_index("dt").plot()
Out[137]: <AxesSubplot:xlabel='dt'>
