不确定数量的潘达系列的元素明智逻辑和[英] Element-wise logical AND on indeterminate number of Pandas Series

本文是小编为大家收集整理的关于不确定数量的潘达系列的元素明智逻辑和的处理方法,想解了不确定数量的潘达系列的元素明智逻辑和的问题怎么解决?不确定数量的潘达系列的元素明智逻辑和问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

假设我有一个 n 的列表/可迭代(其中 n 对函数未知)表示逻辑布尔索引的 Pandas 系列,我想按元素对它们进行 AND 并使用生成的系列来索引一个数据框.

目前我正在使用 np.logical_and(x1,x2) 和 for 循环来执行此操作.我在使用 itertools.izip 或 zip 时运气不佳.pandas.Series 对象似乎不喜欢被他们操作.

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

有什么想法吗?我觉得既然这些是 ndarray 必须有一些明显干净的方法来做到这一点.

解决方案

假设我理解你,你可以使用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.

记住你也可以使用any和all,例如

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

本文地址:https://www.itbaoku.cn/post/1727741.html