Как укоротить время на объекте DateTime в Python? - PullRequest
208 голосов
/ 29 марта 2011

Что такое классный способ усечения объекта datetime в python?

В данном конкретном случае до дня. Таким образом, в основном устанавливаем часы, минуты, секунды и микросекунды в 0.

Я бы хотел, чтобы выходные данные также были объектом datetime, а не строкой.

Ответы [ 14 ]

0 голосов
/ 02 апреля 2019
>>> import datetime
>>> dt = datetime.datetime.now()
>>> datetime.datetime.date(dt)
datetime.date(2019, 4, 2)
0 голосов
/ 19 сентября 2018

Если вы имеете дело с серией типа DateTime, существует более эффективный способ их обрезать, особенно если в объекте серии много строк.

Вы можете использовать функцию floor

Например, если вы хотите сократить его до часов:

Генерация диапазона дат

times = pd.Series(pd.date_range(start='1/1/2018 04:00:00', end='1/1/2018 22:00:00', freq='s'))

Мы можем проверить это, сравнивая время работы между функциями замены и пола.

%timeit times.apply(lambda x : x.replace(minute=0, second=0, microsecond=0))
>>> 341 ms ± 18.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%timeit times.dt.floor('h')
>>>>2.26 ms ± 451 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
0 голосов
/ 25 июля 2017

6 лет спустя ... Я нашел этот пост, и мне понравился больше numpy aproach:

import numpy as np
dates_array = np.array(['2013-01-01', '2013-01-15', '2013-01-30']).astype('datetime64[ns]')
truncated_dates = dates_array.astype('datetime64[D]')

cheers

0 голосов
/ 29 марта 2011

Что означает усечение?

Вы имеете полный контроль над форматированием, используя метод strftime () и используя соответствующую строку формата.

http://docs.python.org/library/datetime.html#strftime-strptime-behavior

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...