早上好
我有以下一个数据框,其中包含两列整数和一个计算为的系列(差异):
diff = (df["col_1"] - df["col_2"]) / (df["col_2"])
我想创建一个数据框的列,其值为:
- 等于 0,如果 (diff >= 0) & (diff <= 0.35)
等于 1,如果 (diff > 0.35)
等于 2,如果 (diff < 0) & (diff >= - 0.35)
- 等于 3,如果 (diff < - 0.35)
我试过:
df["Class"] = np.where( (diff >= 0) & (diff <= 0.35), 0,
np.where( (diff > 0.35), 1,
np.where( (diff < 0) & (diff >= - 0.35) ), 2,
np.where( ((diff < - 0.35), 3) )))
但是报如下错误:
SystemError: <built-in function where> returned a result with an error set
我该如何解决?
最佳答案
您可以使用 numpy.select
分别指定条件和值。
s = (df['col_1'] / df['col_2']) - 1
conditions = [s.between(0, 0.35), s > 0.35, s.between(-0.35, 0), s < -0.35]
values = [0, 1, 2, 3]
df['Class'] = np.select(conditions, values, np.nan)
关于python - Numpy Where 有两个以上的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51301149/