Изменение в DateTime возвращает 0 в пандах - PullRequest
0 голосов
/ 15 октября 2019

Мои данные выглядят так:

01.02.2019 0:00

и формат Дата. Месяц. Год часы: минуты

Когда я пытаюсь найти изменение во времени в минутах:

df['DateTime']=pd.to_datetime(df['DateTime'],infer_datetime_format=True,errors='coerce', format="%d.%m.%Y %H:%M")
df['dt'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[m]')

Pandas возвращает нулевые значения:

0           NaN
1           0.0
2           0.0
3           0.0
4           0.0
            ... 
14022907    0.0
14022908    0.0
14022909    0.0
14022910    0.0
14022911    0.0
Name: dt, Length: 14022912, dtype: float64

У меня были похожие данные, но в формате Date.Month.Year часы: минуты: секунды Я использовал тот же подход, но вместо минут я рассчитывал секунды, и он работал отлично:

df['DateTime']=pd.to_datetime(df['DateTime'],infer_datetime_format=True,errors='coerce', format="%d.%m.%Y %H:%M:%S")
df['dt'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[s]')

Что может быть причиной проблемы с минутами?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 октября 2019

Вероятная причина проблемы:

Возможно, ваш столбец DateTime содержит информацию о дне, часах и минутах, что приводит к разнице в 0.

Проверьте между кадром данных и посмотритеесли проблема не устранена.

2 голосов
/ 15 октября 2019

Для меня в пандах 0.25.0 отлично работает ваше решение, но возможно упростить его на Series.diff, получить секунды на Series.dt.total_seconds и разделить на 60 дляминут:

print (df)
          DateTime
0  01.02.2019 0:00
1  01.02.2019 0:10
2  01.02.2019 0:30
3  01.02.2019 0:55

df['DateTime']=pd.to_datetime(df['DateTime'],infer_datetime_format=True,
                              errors='coerce', format="%d.%m.%Y %H:%M")

df['dtm'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[m]')
df['dts'] = (df['DateTime']-df['DateTime'].shift(1)).astype('timedelta64[s]')

df['dtm1'] = df['DateTime'].diff().dt.total_seconds() / 60
print (df)
             DateTime   dtm     dts  dtm1
0 2019-02-01 00:00:00   NaN     NaN   NaN
1 2019-02-01 00:10:00  10.0   600.0  10.0
2 2019-02-01 00:30:00  20.0  1200.0  20.0
3 2019-02-01 00:55:00  25.0  1500.0  25.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...