【问题标题】:If a substring matches in a string then perform arithmetic operations如果子字符串在字符串中匹配,则执行算术运算
【发布时间】:2023-01-13 00:05:11
【问题描述】:

我有一个数据框测试有 2 列:货币和薪水:

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

我想创建一个专栏薪水_in_INR具有以下输出的薪水(以 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

要么没有产生预期的结果

【问题讨论】:

  • 请不要在问题中发布相同的文本两次(或更多次),并格式化您的表格等。

标签: python if-statement


【解决方案1】:

创建一个转换率图,您可以手动或自动执行此操作,但使用另一个函数,然后在第一个 ':' 处拆分货币字符串,只取第一个(索引 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']

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 2013-02-19
    • 2013-09-06
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 2014-01-27
    相关资源
    最近更新 更多