Pandas:使用日期列表和DateTimeIndex访问数据

时间:2017-08-29 17:32:31

标签: python pandas dataframe datetimeindex

我有一个带有(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!?.]) 的pandas DataFrame:

(?:.*[a-z].*[A-Z].*[0-9].*[!?.])|(?:.*[A-Z][a-z].*[0-9].*[!?.])|(?:.*[0-9].*[a-z].*[A-Z].*[!?.])|(?:.*[!?.].*[a-z].*[A-Z].*[0-9])|(?:.*[A-Z][a-z].*[!?.].*[0-9])|...

我想使用日期列表提取给定日期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

我想检索此列表中给出的日期的所有数据(一整天的数据)

1 个答案:

答案 0 :(得分:6)

您需要先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'])]

另一种解决方案是比较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