关于Pandas系列的不确定数量的元素逻辑AND

时间:2014-05-01 23:08:04

标签: python pandas

让我们说我有一个列表/可迭代的n(其中n是函数未知的)Pandas Series表示逻辑布尔索引,我喜欢AND所有这些都是元素和使用生成的Series来索引DataFrame。

目前,我正在使用np.logical_and(x1,x2)和for循环执行此操作。我使用itertools.izipzip并没有太多运气。大熊猫。系列对象似乎并不喜欢被他们操作。

我现在一直在摸不着头脑,看看为什么这似乎会导致一系列布尔值,但我会在执行时得到IndexingError: Unalignable boolean Series key provided

有什么想法?我觉得,因为这些ndarray必须有一些明显干净的方法来做到这一点。

1 个答案:

答案 0 :(得分:4)

假设我了解你,你可以使用logical_and.reduce。从系列列表开始:

>>> ss = [pd.Series([ True, False,  True, False,  True]), pd.Series([False,  True,  True, False, False]), pd.Series([False, False,  True, False,  True]), pd.Series([False,  True,  True, False, False]), pd.Series([ True,  True,  True,  True, False])]

看起来像

>>> pd.DataFrame(ss)
       0      1     2      3      4
0   True  False  True  False   True
1  False   True  True  False  False
2  False  False  True  False   True
3  False   True  True  False  False
4   True   True  True   True  False

[5 rows x 5 columns]

如果它是一个数据框,您可以跨列减少:

>>> np.logical_and.reduce(ss)
array([False, False,  True, False, False], dtype=bool)
如果你想要另一个方向,请

或通过axis=1

请记住,您还可以使用anyall,例如

>>> df = pd.DataFrame(ss)
>>> df.all()
0    False
1    False
2     True
3    False
4    False
dtype: bool