簡體   English   中英

根據其他列修改 dataframe 值

[英]modify dataframe values based on other column

data = {'Payment_type' =['Mastercard','Visa','Visa','Diners'],'Price' = [1200,600,300,5000]}

我正在努力解決如何根據付款類型修改價格。 這是我的代碼,這是錯誤的

for i in df['Payment_Type']:
    if i == 'Visa':
        df['Price']*0.01
    elif i=='Matercard':
        df['Price']*0.02
    elif  i == 'Diners':
        df['Price']*0.03
    else:
        df['Price']*0.04

你可以這樣做:

cards = ['Visa','Mastercard','Diners']

for card in cards: 
    if card == 'Visa': 
        df.loc[df['Payment_type']==card,'Price'] *= 0.01
    elif card == 'Mastercard':
        df.loc[df['Payment_type']==card,'Price'] *= 0.02
    elif card == 'Diners':
        df.loc[df['Payment_type']==card,'Price'] *= 0.03    
else:     
    df.loc[~df['Payment_type'].isin(cards),'Price'] *= 0.04 

這使用了for循環的else分支,實踐起來總是很有趣。

讓我們嘗試使用map創建dict

d = dict(zip(cards, [0.01,0.02,0.03]))
data.price = data.price*data.card.map(d).fillna(0.04)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM