#python #pandas #datetime
Есть pd.Series df['Время'], который имеет формат от года до миллисекунды: >> 0 2018-12-01 00:00:00.000 1 2018-12-01 00:11:24.997 2 2018-12-01 00:15:00.000 3 2018-12-01 00:19:42.000 4 2018-12-01 00:29:59.997 5 2018-12-01 00:31:36.997 6 2018-12-01 00:45:00.000 Нужно перевести создать столбец, наследующий от него только даты: >> 0 2018-12-01 1 2018-12-01 2 2018-12-01 3 2018-12-01 4 2018-12-01 5 2018-12-01 6 2018-12-01 В документации внятного объяснения не нашел. Метод df['Время'].date() не работает на pd.Series, работает только на конкретном элементе df['Время'][0].date()
Ответы
Ответ 1
В вашем случае наиболее идиоматическим способом будет использование Series.dt.floor(), т.к. данный метод возвращает Series того же типа как и оригинальный Series: In [92]: d.dt.floor("1D") Out[92]: 0 2018-12-01 1 2018-12-01 2 2018-12-01 3 2018-12-01 4 2018-12-01 5 2018-12-01 6 2018-12-01 dtype: datetime64[ns] In [93]: d.dt.floor("1D").dtype Out[93]: dtype('Ответ 2
Вы можете обращаться к различным частям даты/времени через Series.dt() In [31]: d = pd.Series(['2018-12-01 00:00:00.000', '2018-12-01 00:11:24.997', ...: '2018-12-01 00:15:00.000', '2018-12-01 00:19:42.000', ...: '2018-12-01 00:29:59.997', '2018-12-01 00:31:36.997', ...: '2018-12-01 00:45:00.000']) ...: ...: In [32]: d Out[32]: 0 2018-12-01 00:00:00.000 1 2018-12-01 00:11:24.997 2 2018-12-01 00:15:00.000 3 2018-12-01 00:19:42.000 4 2018-12-01 00:29:59.997 5 2018-12-01 00:31:36.997 6 2018-12-01 00:45:00.000 dtype: object In [33]: d = pd.to_datetime(d) In [34]: d Out[34]: 0 2018-12-01 00:00:00.000 1 2018-12-01 00:11:24.997 2 2018-12-01 00:15:00.000 3 2018-12-01 00:19:42.000 4 2018-12-01 00:29:59.997 5 2018-12-01 00:31:36.997 6 2018-12-01 00:45:00.000 dtype: datetime64[ns] In [35]: d = d.dt.date In [36]: d Out[36]: 0 2018-12-01 1 2018-12-01 2 2018-12-01 3 2018-12-01 4 2018-12-01 5 2018-12-01 6 2018-12-01 dtype: object
Комментариев нет:
Отправить комментарий