繁体   English   中英

根据另一列中每一行的值创建新列

[英]Create new column based on values in each row in another column

我想知道是否有人可以帮助我解决以下问题。 我有这个 dataframe:

df = {'Price': [60.50,5.20,7,20.16,73.50,12.55,8.70,6,54.10,89.40,12,55.50,6,120,13.20], 
      'Discount': [1,1,1,0.5,0.4,1,0.3,0.2,1,1,1,1,1,0.1,0.9]}
df = pd.DataFrame(data=df)

我要做的是遍历df中的每一行,如果折扣金额为1,则用0填充该行的金额。否则,它将根据折扣计算已扣除的金额。 我有以下代码来执行此操作:

for index, row in df.iterrows():
    if row['Discount'] == 1:
        df['Amount off'] = 0
    else:
        df['Amount off'] = df['Price']*df['Discount']

但是,一旦我运行它,当折扣为 1 时,它不会产生正确的折扣金额。请问有人能给我一些提示和指示吗?

先感谢您

您的错误是,您在调用例如时正在操作完整的 dataframe

df['Amount off'] = 0

因此,在执行这一行之后,总列是0 取决于最后一行,您最终将只有0df['Price']*df['Discount']

您可以使用:

df['Amount off']=df['Price']*df['Discount']
df.loc[df['Discount']==1, 'Amount off']=0
df.head()

首先,我计算整个列,然后只更改df['Discount']==1的值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM