Pandas: Accessing data with list of dates and DateTimeIndex

我的未来我决定 提交于 2019-12-22 06:27:16

问题


I have a pandas DataFrame with a 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

I would like to extract all the data of a given date yyyy-mm-dd using a list of dates: ['2016-04-25','2016-04-28',...]

I tried the following:

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

 Empty DataFrame

I would like to retrieve all the data (data of the whole day) of the dates given in this list


回答1:


You need remove times first by this solutions:

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'])]

Another solution is compare DatetimeIndex.date, but necessary use numpy.in1d instead isin:

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

Or compare strings created 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


来源:https://stackoverflow.com/questions/45945104/pandas-accessing-data-with-list-of-dates-and-datetimeindex

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!