Как лучше всего обрабатывать дату и время в списках или в датафреймах? - PullRequest
1 голос
/ 29 февраля 2020

Я пытаюсь сравнить список datetime или dataFrame, но он дает мне несколько ошибок, таких как th

AttributeError: у объекта 'DatetimeIndex' нет атрибута'ween_time 'или' lo c '

Example Data: 
observed_time = ['2020-02-20T15:54:00Z', '2020-02-20T16:54:00Z']

slice_begin_time=['2020-02-20T17:50:00Z', '2020-02-20T18:50:00Z', '2020-02-20T19:50:00Z', '2020-02-20T20:50:00Z', '2020-02-20T21:50:00Z']
slice_end_time=['2020-02-20T18:05:00Z', '2020-02-20T19:05:00Z', '2020-02-20T20:05:00Z', '2020-02-20T21:05:00Z', '2020-02-20T22:05:00Z']

### LIBS
from datetime import datetime, timedelta
import pandas as pd

df=pd.to_datetime(check_time)
for i in range(len(slice_begin_time)):
    sdf = df.between_time(pd.Timestamp(slice_begin_time[i]),pd.Timestamp(slice_begin_time[i]))
    print(sdf)

Я пытался

 #print(check_time.loc[(check_time > pd.to_datetime(slice_begin_time[i])) & (check_time < pd.to_datetime(slice_end_time[i]))])

Чтобы выяснить, в чем дело, но тогда это дает мне

AttributeError: у объекта «DatetimeIndex» нет атрибута «lo *» 1015 * '

1 Ответ

0 голосов
/ 29 февраля 2020

Я думаю, что проблема является переменной df присваивается DatetimeIndex, а также DataFrame.between_time работает с временем, а не с датой:

df=pd.to_datetime(observed_time)

Вы можете zip оба списки и использовать Series.between:

s = pd.Series(pd.to_datetime(observed_time))
for start, end in zip(slice_begin_time, slice_end_time):
    sdf = s[s.between(pd.Timestamp(start),pd.Timestamp(end))]
    print(sdf)

Ваше решение должно быть изменено:

s = pd.Series(pd.to_datetime(observed_time))
for i in range(len(slice_begin_time)):
    sdf = s[s.between(pd.Timestamp(slice_begin_time[i]),pd.Timestamp(slice_end_time[i]))]
    print(sdf)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...