Панды: доступ к данным со списком дат и DateTimeIndex

У меня есть пандас DataFrame с DateTimeIndex:

                           A          B
2016-04-25 18:50:06   440.967796   201.049600  
2016-04-25 18:50:13   441.054995   200.767034  
2016-04-25 18:50:20   441.142337   200.484475
...
2016-07-27 18:50:06   440.967796   201.049600  
2016-07-27 18:50:13   441.054995   200.767034  
2016-07-27 18:50:20   441.142337   200.484475

Я хотел бы извлечь все данные за определенную дату yyyy-mm-dd используя список дат: ['2016-04-25','2016-04-28',...]

Я попробовал следующее:

 df[df.index.isin(['2016-04-25', '2016-04-26'])]

 Empty DataFrame

Я хотел бы получить все данные (данные за весь день) дат, указанных в этом списке

1 ответ

Решение

Вам нужно удалить раз сначала с помощью этих решений:

df = df[df.index.normalize().isin(['2016-04-25', '2016-04-26'])]

df = df[df.index.floor('D').isin(['2016-04-25', '2016-04-26'])]

Другое решение - сравнить DatetimeIndex.date, но необходимо использовать numpy.in1d вместо isin:

df = df[np.in1d(df.index.date, pd.to_datetime(['2016-04-25', '2016-04-26']).date)]

Или сравните созданные строки DatetimeIndex.strftime:

df = df[np.in1d(df.index.strftime('%Y-%m-%d'), ['2016-04-25', '2016-04-26'])]

print (df)
                              A           B
2016-04-25 18:50:06  440.967796  201.049600
2016-04-25 18:50:13  441.054995  200.767034
2016-04-25 18:50:20  441.142337  200.484475
Другие вопросы по тегам