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)
。
答案 0 :(得分:4)
你几乎就在那里,你只需要在你的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])