2017-08-29 68 views
3

访问数据我有一个DateTimeIndex一个大熊猫数据帧:熊猫:有日期的列表,并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 

我想检索所有数据的日期,GI的(全日的数据)在此列表中

回答

3

您需要通过this solutions先卸下次VEN:

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 
+0

谢谢。我有一个后续问题。是否有可能在每个独立的日子里切断第一个'n'数据行,而不复制任何数据?这些日子有不同的开始/结束时间和不同的数据行的数量 – user3142067

+0

嗯,尝试'df = df.drop(df.groupby(df.index.date).head(2).index)' - 它删除前2个值从每个日期。 – jezrael

+0

似乎工作。谢谢 – user3142067