[英]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.