Я хочу выбрать все значения между двумя датами в моем большом df_data
. Это работает, когда я делаю это вне al oop для данных за один день:
df_data['datetime'] = pd.to_datetime(df_data['TimeStamp'] )
twelveearlier = datetime.datetime(2017, 12,23, 00,00, 00)
twelvelater = datetime.datetime(2017, 12, 24, 00, 00, 00)
df = df_data[(df_data['datetime']>= twelveearlier) &
(df_data['datetime']< twelvelater)]
Но когда я пытаюсь сделать это, просматривая список дат ниже, я получаю ValueError: Lengths must match to compare
,
event_name_list = ['noEvent_20161208174900', 'NoEvent_20161209174200', 'NoEvent20161211_061400']
for event in event_name_list:
event_time = re.findall(r'\d+', event)
event_timestamp = pd.to_datetime(event_time)
twelvelater = event_timestamp + datetime.timedelta(hours=12)
twelveearlier = event_timestamp - datetime.timedelta(hours=12)
df = df_data[(df_data['datetime']>= twelveearlier.values) &
(df_data['datetime']< twelvelater.values)]
Я думаю, это потому, что двенадцатилетний и двенадцатилетний являются разными типами в версии цикла из-за использования event_timestamp - datetime.timedelta(hours=12)
, но преобразовывают их с использованием to_datetime
, to_pydatetime
et c. не помогает Как получить twelveearlier
и twelvelater
в том же формате, что и df_data[
datetime ]
, чтобы я мог создать df
на основе только дат между twelveearlier
и twelvelater
?
df_data['datetime']
3250592 2017-12-31 23:40:00
3250593 2017-12-31 23:50:00
Name: datetime, dtype: datetime64[ns]
print event_timestamp
DatetimeIndex(['2016-12-16 06:22:29'], dtype='datetime64[ns]', freq=None)
print twelveearlier
DatetimeIndex(['2016-12-08 05:49:00'], dtype='datetime64[ns]', freq=None)
print twelvelater
DatetimeIndex(['2016-12-09 05:49:00'], dtype='datetime64[ns]', freq=None)