假设我有下表:multiply total taxY 500 .1Y 250 .5N 300 .5仅当乘积的值为Y时,我才希望将总计设置为total * tax最终输出:multiply total taxY 50 .1Y 125 .5N 300 .5
3 回答

长风秋雁
TA贡献1757条经验 获得超7个赞
用 np.where
df['total'] = np.where(df['multiply'] == 'Y', df['total'] * df['tax'], df['total'])
print(df)
multiply total tax
Y 50.0 0.1
Y 125.0 0.5
N 300.0 0.5

MM们
TA贡献1886条经验 获得超2个赞
在这里,我们哥们
df.loc[df.multiply == 'Y', 'total'] = df.loc[df.multiply == 'Y', 'total'] * df.loc[df.multiply == 'Y', 'tax']

慕容森
TA贡献1853条经验 获得超18个赞
可以那样做
df.loc[df['multiply'] == 'Y', 'total'] = df.loc[df['multiply'] == 'Y', 'total'] * df.loc[df['multiply'] == 'Y', 'tax']
使用pandas where和assign的另一种方法是:
df.where(df['multiply'] == 'N', df.assign(total = df['total'] * df['tax']))
输出:
multiply total tax
0 Y 50 0.1
1 Y 125 0.5
2 N 300 0.5
添加回答
举报
0/150
提交
取消