Панды: доступ к данным со списком дат и 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