2017-06-05 87 views
2

我有一个结构为这样一个时间指数DF:子集的数据帧

     Sensor UnitNo 
Time        
2016-07-28 18:34:44 19.0  1.0 
2016-07-28 19:27:39 19.0  1.0 
2016-07-20 20:45:39 19.0  1.0 
2016-07-20 23:05:29 19.0  1.0 
2016-07-21 01:23:30 19.0  1.0 
... 

我想子集这个df,可以用时间指数和布尔列一个系列:

Time 
2016-07-28 False 
2016-07-21 False 
2016-07-20  True 

我想子集的系列True日期原DF:

     Sensor UnitNo 
Time        
2016-07-20 20:45:39 19.0  1.0 
2016-07-20 23:05:29 19.0  1.0 

更新 道歉,当我第一次问这个问题时,我想我可以很容易地将系列转换成一个时间列表,但是我发现这个问题有几个原因。所以,我更新了上面的问题,以类似于我的数据的当前状态。任何帮助,将不胜感激!提前致谢。

回答

0

尝试str.contains

List=['2016-07-28','2016-07-20'] 
List1=('|'.join(List)) 
df[df.index.to_series().str.contains(List1)] 



         Sensor UnitNo 
Time        
2016-07-28 18:34:44  19  1 
2016-07-28 19:27:39  19  1 
2016-07-20 20:45:39  19  1 
2016-07-20 23:05:29  19  1 
0

使用.loc

df.loc[['2016-07-28', '2016-07-20'],:] 

UPDATE

如果使用不它的工作是布尔Series直接作为布尔指数为Dataframe

df.loc[bool_series, :] 
+0

不,我得到以下错误:'提高IndexingError( 'Unalignable布尔系列提供了关键的') pandas.core.indexing.IndexingError:Unalignable布尔系列关键provided' – jtam

+0

的'bool_series'是下采样版本的df,所以它们没有相同的行数。 – jtam

+0

...如果我这样做:'df_tmp.loc [bool_series.index,:]'它给了我一个错误,'df'中的任何日期都不在'bool_series.index'中。我*认为*这与熊猫认为我正在传递'datetime'对象而不是'date'对象有关,即它正在寻找时间瞬间而不是一段时间的精确匹配(即一个天)。 – jtam