python - 基于多列的 Pandas 多个条件

标签 python pandas dataframe numpy conditional-statements

我正在尝试根据两个条件为 Pandas 数据框的点着色。示例:

IF value of col1 > a AND value of col2 - value of col3 < b THEN value of col4 = string
ELSE value of col4 = other string.

我现在已经尝试了很多不同的方法,但我在网上找到的所有内容都只取决于一个条件。

我的示例代码总是引发错误:

The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

这是代码。尝试了多种变体但均未成功。

df = pd.DataFrame()

df['A'] = range(10)
df['B'] = range(11,21,1)
df['C'] = range(20,10,-1)

borderE = 3.
ex = 0.

#print df

df['color'] = np.where(all([df.A < borderE, df.B - df.C < ex]), 'r', 'b')

顺便说一句:我明白,它说的是什么,但不知道如何处理。

最佳答案

选择标准使用Boolean indexing :

df['color'] = np.where(((df.A < borderE) & ((df.B - df.C) < ex)), 'r', 'b')

>>> df
   A   B   C color
0  0  11  20     r
1  1  12  19     r
2  2  13  18     r
3  3  14  17     b
4  4  15  16     b
5  5  16  15     b
6  6  17  14     b
7  7  18  13     b
8  8  19  12     b
9  9  20  11     b

关于python - 基于多列的 Pandas 多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603018/

相关文章:

python - python 3.6 与旧版本中的字典顺序

Pandas 返回包含字符串的单元格位置

python - pd.get_dummies() 在大级别上变慢

python - 使用 pyExcelerator 合并 Excel 单元格

python - 检查数组中的元素是否存在于 Pandas DataFrame 中

python - 将相同的随机值分配给 python Dataframe 中的 A-B , B-A 对

python - 通过添加列创建 pandas 数据框

python - Pandas 合并并保留在右边并删除左边

python - 如何使用 fuzzywuzzy 比率将一个数据框中的值与另一个数据框中的列进行比较

python - 如何在 Python 中将 '%' 替换为 '\x'