python - pandas df 中的多重逻辑比较

标签 python pandas dataframe

如果我有以下 pandas df

A   B   C   D
1   2   3   4
2   2   3   4

我想添加一个新列为 1、2 或 3,具体取决于,

(A > B) && (B > C) = 1
(A < B) && (B < C) = 2
Else = 3

最好的方法是什么?

最佳答案

您可以使用 numpy.select构建您的多个条件。最后一个参数表示默认值。

conditions = [(df.A > df.B) & (df.B > df.C),
              (df.A < df.B) & (df.B < df.C)]

values = [1, 2]

df['E'] = np.select(conditions, values, 3)

有几种选择:嵌套numpy.where、顺序pd.DataFrame.locpd.DataFrame.apply。该解决方案的主要优点是可读性,同时保持矢量化。

关于python - pandas df 中的多重逻辑比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140131/

相关文章:

python - 使用数据框另一部分的数据编辑 pandas 数据框中的值

python - 如何为Django模型生成HASH

python - Django以选择形式访问对象属性

python-2.7 - Pandas 导入错误

Python - Pandas 组合多个文件的部分

python - 在 Canvas 中创建框架

python - 使用 Dataframe 中的现有列分配列值时出现问题

r - 从列表中提取值和属性并将其转换为 R 中的数据框

python - 查找两个数据帧的两列之间的额外内容 - 相减

python - 使用 pandas dataframe.query() 选择列