簡體   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