select 数据帧行 (datetimeindex) 按 datetime.date 列表

select dataframe rows (datetimeindex) by a list of datetime.date

df 看起来像这样:

DateTime
2017-07-10 03:00:00    288.0
2017-07-10 04:00:00    306.0
2017-08-10 05:00:00    393.0
2017-08-10 06:00:00    522.0
2017-09-10 07:00:00    487.0
2017-09-10 08:00:00    523.0
2017-10-10 09:00:00    585.0

问题如何select在日期列表中行:

['2017-07-10', '2017-09-10']

拥有:

DateTime
2017-07-10 03:00:00    288.0
2017-07-10 04:00:00    306.0
2017-09-10 07:00:00    487.0
2017-09-10 08:00:00    523.0

谢谢

假设日期时间是索引,请尝试以下操作:

to_search=['2017-07-10', '2017-09-10']
df[df.index.to_series().dt.date.astype(str).isin(to_search)]

                        1
DateTime                  
2017-07-10 03:00:00  288.0
2017-07-10 04:00:00  306.0
2017-09-10 07:00:00  487.0
2017-09-10 08:00:00  523.0

鉴于您列表中的日期最多包含每日信息,您可以从地板开始(Series.dt.floor) the DatetimeIndex up to the daily level and indexing with the list of datetime objects using isin:

t = [pd.to_datetime('2017-07-10'), pd.to_datetime('2017-09-10')]
df.index= pd.to_datetime(df.index)

df[df.index.floor('d').isin(t)]

输出

   DateTime
2017-07-10 03:00:00     288.0
2017-07-10 04:00:00     306.0
2017-09-10 07:00:00     487.0
2017-09-10 08:00:00     523.0