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

基于多条件熊猫的输出逻辑序列

皇甫鸿远
2023-03-14

我想基于多个条件的评估创建一系列新的逻辑值。

举个例子

> df = pd.DataFrame({'id':[40, 20, 50, 5, 80], 'value': ['a', 'd', 'g', 'g', 'g']})
​
> df[(df.id > 40) & (df.value.isin(['a', 'g']))]

id  value
2   50  g
4   80  g

然而,我想返回一个逻辑序列,即。

False 
False 
True 
False 
True

如果可能的话,我想用熊猫的方法。

共有2个答案

狄玉书
2023-03-14

这就是你需要的吗?

(df.id > 40) & (df.value.isin(['a', 'g']))
Out[2059]: 
0    False
1    False
2     True
3    False
4     True
dtype: bool
阴鸿才
2023-03-14

只需使用:

s = (df.id > 40) & (df.value.isin(['a', 'g']))
print(s)

输出:

0    False
1    False
2     True
3    False
4     True
dtype: bool
 类似资料:
  • 问题内容: 如何将条件逻辑应用于Pandas DataFrame。 请参见下面显示的DataFrame, 我的原始数据显示在“数据”列中,并且期望的输出显示在其旁边。如果“数据”中的数字小于2.5,则所需的输出为False。 我可以应用循环并重新构建DataFrame …但是那是“非Python的” 问题答案: 只需将列与该值进行比较:

  • 我正在编写一个代码,将滚动窗口应用于返回多列的函数。 输入:熊猫系列 预期输出:3列数据帧 res的内容: 错误: 我尝试过的: 在应用中更改原始=真 在应用中使用lambda函数 以列表/numpy数组/dataframe/series的形式返回fun1中的结果 我还浏览了SO中的许多相关帖子,以陈述以下几点: 熊猫-使用`。滚动()`在多个列上 但是指定的解决方案都没有解决这个问题。 有没有直

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

  • 问题内容: 我想根据以下条件创建一个带有数值的新列: 一种。 b。 C。所有其他组合, 我希望最终结果如下: 我该怎么做? 问题答案: 为此,可以使用做,条件使用位和用于和与周围的多个条件括号由于运算符优先级。因此,返回条件为true的地方,否则返回:

  • 问题内容: 我正在尝试使用Pandas在几个条件下进行布尔索引。我原来的DataFrame称为。如果执行以下操作,将得到预期的结果: 但是,如果我这样做(我认为应该是等效的),则不会返回任何行: 知道导致差异的原因是什么? 问题答案: 使用是因为运算符优先级: 或者,在单独的行上创建条件: 样品 :

  • 我有一个如下所示的数据框,我必须准备“目标列” 如果同一列下的两个单词之间有逗号,则必须按第2行所示标记两次。如果没有逗号但有空格,则必须将其视为同一个单词,即必须标记一次。另外,请注意顺序也很重要(第3行和第6行)。忽略任何内容(即没有单词,因此没有标签) 我已经使用了迭代(即使用iloc,for循环),但是它需要大量的时间,因为数据点超过200k,标签的数量也超过20个。我希望有一个有效的代码