a b
0 100 90
1 30 117
2 90 99
3 200 94
我想创建一个新的df["c"]
具有以下条件:
- 如果
a > 50
b 进入(a ± 0.5a)
,然后c = a
- 如果
a > 50
b 出局了(a ± 0.5a)
,然后c = b
- 如果
a <= 50
,然后*c = a*
输出应该是:
a b c
0 100 90 100
1 30 117 30
2 90 99 90
3 200 94 94
我已经尝试过:
df['c'] = np.where(df.eval("0.5 * a <= b <= 1.5 * a"), df.a, df.b)
但我不知道如何包含最后一个条件 (If a <= 50, then c = a)
在这句话中。
最佳答案
差不多就完成了,您只需要在 eval 字符串中添加一个 or
子句即可。
np.where(df.eval("(0.5 * a <= b <= 1.5 * a) or (a <= 50)"), df.a, df.b)
# ~~~~~~~~~~~~
array([100, 30, 90, 94])
关于python - 基于多种条件的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49554117/