#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
Комментариев нет:
Отправить комментарий