使用两个条件索引DataFrame

时间:2015-02-04 21:56:20

标签: python pandas datetime dataframe

我正在尝试根据两个条件获取DataFrame的子集。

这是我的简化示例:

import pandas as pd
test = pd.DataFrame(np.ones(48),
                    index=pd.date_range('2015-01-01',
                    periods=48, 
                    freq='1800S'))

我现在想要得到时间范围t中的所有值> 08:00和t< 22:00,我试过了:

result = test[test.index.hour>8 & test.index.hour<22]

然后我得到ValueError that the truth value of an array with more than one element is ambiguous, use a.any() or a.all() - 这里我运气不好......

2 个答案:

答案 0 :(得分:2)

有两个简单的解决方案:

  • 首先:将你的条件包括在括号中 (test.index.hour > 8) & (test.index.hour<22) 由于运营商和优先
  • 第二:使用the query function

答案 1 :(得分:1)

在使用逐元素&之前,您需要在两个数组周围放置括号:

(test.index.hour > 8) & (test.index.hour < 22)

&运算符的higher precedence比该表达式中的比较运算符高{{3}},这会导致问题。