首页 > 解决方案 > 如果匹配条件,则将值乘以变量,否则乘以另一个变量

问题描述

嗨,为什么这种代码不起作用?以及如何使它与熊猫一起使用?

我只是想对特定产品应用不同的税率,对所有其他产品应用不同的税率。

d = {'Product':['Banana','Orange','Grape'],
     'Value':[100,80,30]}

df = pd.DataFrame(data=d)

x = 0.25
y = 0.5

for value in df['Product']:
    if value=="Banana":
        df['Tax'] = df['Value'] * x
    else:
        df['Tax'] = df['Value'] * y

标签: pythonpandas

解决方案


创建一个蒙版然后应用它

mask = df['Product'].eq('Banana')
df.loc[mask, 'Tax'] = df['Value'] * x
df.loc[~mask, 'Tax'] = df['Value'] * y

或节省几毫秒,我想

df['Tax'] = df['Value'] * y
df.loc[df['Product'].eq('Banana'), 'Tax'] = df['Value'] * x

推荐阅读