如果我有以下 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.loc
、pd.DataFrame.apply
。该解决方案的主要优点是可读性,同时保持矢量化。
关于python - pandas df 中的多重逻辑比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50140131/