基于多个条件的新列

New column based in multiple conditions

     a    b
0  100   90
1   30  117
2   90   99
3  200   94

我想创建一个新的 df["c"],条件如下:

输出应该是:

     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])