当前位置: 首页 > 知识库问答 >
问题:

关于不确定数列的元素逻辑与

阎作人
2023-03-14

假设我有一个表示逻辑布尔索引的n(其中n是函数未知的)熊猫系列的列表/迭代,我想以元素方式与它们进行AND,并使用结果系列对DataFrame进行索引。

目前我正在使用np.logical_和(x1,x2)以及for循环来实现这一点。我在使用itertools.izipzip时运气不太好。熊猫们似乎不喜欢被他们操作。

我已经挠头有一段时间了,我可能看不到为什么这似乎会导致一系列布尔值,但我在执行时得到了索引错误:提供了不可对齐的布尔序列键。

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


共有1个答案

屈博
2023-03-14

假设我理解您的意思,您可以使用逻辑和.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)

如果需要另一个方向,则通过轴=1。

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

>>> df = pd.DataFrame(ss)
>>> df.all()
0    False
1    False
2     True
3    False
4    False
dtype: bool
 类似资料:
  • 问题内容: 我想要按元素进行逻辑或运算符。我知道“或”本身不是我想要的。 我知道AND对应于NOT 。但是OR呢? 问题答案: 相应的运算符是: 将按元素检查值是否小于3或等于5。 如果您需要执行此操作的功能,我们有 。对于两个条件,您可以使用 或者,对于多种情况,请使用, 由于条件被指定为单独的参数, 因此不需要括号分组。

  • 问题内容: 我有一个包含布尔值的pandas对象。如何获得包含每个值逻辑的序列? 例如,考虑一个包含以下内容的系列: 我想要获得的系列将包含: 这似乎应该相当简单,但显然我放错了我的mojo =( 问题答案: 要反转布尔系列,请使用: 使用Python2.7,NumPy 1.8.0,Pandas 0.13.1: 从Pandas 0.13.0开始,Series不再是;的子类。它们现在是的子类。这可能

  • 我有一个包含布尔值的pandas对象。如何获得包含每个值的逻辑

  • 我写了一段简单的代码来比较随机数组的差异,并发现了一些东西。。。我不太明白。 我生成两个填充随机数的数组 将随机数之间的差异相加 打印出平均差值 我本以为结果是接近0.5的随机数,但实际上是0.3333。 为什么随机数数组位于0.3而不是0.5?

  • 我在Internet上阅读时碰巧遇到了一个基于数组的队列的实现: 下面是代码中的create queue和enqueue逻辑。最初,front和Freal为零。qu->front和不相等,因此项目将被排队。我不明白为什么在这个逻辑中使用2-?

  • 所有链将组成一个二叉树,这就是它们的逻辑关系。 链ID为64位数字,从1开始,所以最多可以有2^64-1条链。 每条链可以有2条子链。 通过这种方式,链的数量和位置确定,方便扩展和跨链访问。