基于多个条件的新列
New column based in multiple conditions
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])
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])