根据条件创建新列

Cos*_*sta 4 python dataframe pandas

price我有一个数据框 df,需要创建一个新列,它是with (int 之前计算的)的乘积metric

df['cost'] = df['price'] * metric if (df['status'] == 'online')
df['cost'] = 0 if df['status'] == 'offline'
Run Code Online (Sandbox Code Playgroud)

Ch3*_*teR 5

True当用于乘法时,我们可以利用1 和False0的点。

3 * True  -> 3
3 * False -> 0
Run Code Online (Sandbox Code Playgroud)

online我们必须检查列中的值是否等于status

df['cost'] = df['price'] * df['status'].eq('online') * metric
Run Code Online (Sandbox Code Playgroud)

无论哪里,statusoffline cost值都是 0。


上述解决方案依赖于您想要将值设置为 0 的事实。offline如果您想设置offline为 let's 999。那么我们Series.where这里就可以使用了。

df['cost'] = df['price'].mul(metric).where(df['status'].eq('online'), 999)
Run Code Online (Sandbox Code Playgroud)

现在,每个offline值都设置为999.

有用的链接: