我的数据集中有以下列,数据来自我的数据源:
Salary
~£2000
~£2000.15 per week
~£2000.50 per month
~£2000 - ~£5000 range
100000INR
INR现在,我想创建一个新列,它应该如下所示:
Salary_clean
2000
104007.8
240006
35000
964
0因此,下面的逻辑将会遵循(所有的salareis最终都是一年一次的):
H 111,当薪资有像INR这样的”by货币“时,然后使用该货币与GBP(Pounds)
。
我怎样才能做到这一点?
发布于 2021-05-18 22:09:45
免责声明:这段代码可能很危险(使用eval函数时没有任何警告)。此外,代码完全处于优化状态,但具有紧凑的优点。
d = {r'~[^\d]+': r'',
r'per week': r'* 52',
r'per month': r'* 12',
r'(.*) - (.*) range': r'(\1 + \2) / 2',
r'\dINR': r' * 0.0096',
r'^[^\W\d]*$': r'0'}
df['Salary_clean'] = df['Salary'].replace(d, regex=True).apply(eval)>>> df
Salary Salary_clean
0 ~£2000 2000.0
1 ~£2000.15 per week 104007.8
2 ~£2000.50 per month 24006.0
3 ~£2000 - ~£5000 range 3500.0
4 100000INR 96.0
5 INR 0.0replace方法的结果:
>>> df['Salary'].replace(d, regex=True)
0 2000
1 2000.15 * 52
2 2000.50 * 12
3 (2000 + 5000) / 2
4 10000 * 0.0096
5 0
Name: Salary, dtype: objecthttps://stackoverflow.com/questions/67593389
复制相似问题