通过datetime.date列表选择数据帧行(datetimeindex)

时间:2019-03-29 11:23:02

标签: python pandas datetime dataframe datetimeindex

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

问题如何选择日期列表中的行:

['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

谢谢

2 个答案:

答案 0 :(得分:2)

假设Datetime是索引,请尝试以下操作:

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

答案 1 :(得分:2)

鉴于列表中的日期最多包含每日信息,您可以先将DatetimeIndex铺底(Series.dt.floor,将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)] 设置为每日级别,然后使用{ {3}}:

   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

输出

{{1}}
相关问题