簡體   English   中英

如果 substring 在字符串中匹配則執行算術運算

[英]If a substring matches in a string then perform arithmetic operations

我有一個包含 2 列的 Dataframe測試:貨幣和薪水:

Currency              Salary
SGD: 2.1  lacs (PA)   2.1   
THB: 3.55 lacs (PA)   3.55  
QAR: 3.12 lacs (PA)   3.12  

我想創建一個Salary_in_INR列,其中包含以下 output 的薪水(INR)

Currency               Salary     Salary_in_INR*
SGD:  2.1 lacs (PA)    2.1        128.87  
THB: 3.55 lacs (PA)    3.55         8.66   
QAR: 3.12 lacs (PA)    3.12         9.98    

1 新加坡元 = 61.37 印度盧比,1 泰銖 = 2.44 印度盧比,1 卡塔爾 = 22.43 印度盧比

我試了兩個代碼

代碼 1

if 'SGD' in Test['Currency'].values ==True:
            Test['Salary_in_INR'] = Test['Salary'] * 61.37
        elif 'THB' in Test['Currency'].values ==True:
            Test['Salary_in_INR'] = Test['Salary'] * 2.44 
        else:
            Test['Salary_in_INR'] = Test['Salary'] * 22.43

代碼 2

if Test['Currency'].str.contains('SGD'):
        Test['Salary_in_INR'] = Test['Salary'] * 61.37
    elif Test['Currency'].str.contains('THB'):
        Test['Salary_in_INR'] = Test['Salary'] * 2.44
    else:
        Test['Salary_in_INR'] = Test['Salary'] * 22.43

要么沒有產生預期的結果

創建一個 map 的轉換率,您可以手動或自動執行此操作,但使用另一個 function,然后在第一個 ':' 拆分貨幣字符串,只取第一個(索引 0)部分。 然后使用貨幣轉換字典中的第一部分來獲得正確的轉換率 -> 相乘:

currency_conversion = {'SGD': 61.37, 'THB': 2.44, 'QAR': 22.43}
df['currency_conversion'] = df['Currency'].str.split(':', n=1).str[0].map(currency_conversion)
df['Salary_in_INR'] = df['salary'] * df['currency_conversion']

暫無
暫無

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

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