在货币值上放置适当的零

时间:2019-05-01 09:22:39

标签: python pandas

有没有一种方法可以使用大熊猫删除字母并将相应的零放在货币值上。我的专栏目前是这样的

Salary
$20M
$5.4M
$2.3K

2 个答案:

答案 0 :(得分:1)

使用:

df.Salary=df.Salary.str.replace('$','')
df.Salary=(df.Salary.replace(r'[KM]+$', '', regex=True).astype(float) * \
df.Salary.str.extract(r'[\d\.]+([KM]+)', expand=False)
.replace(['K','M'], [10**3, 10**6]).astype(int))
print(df)

       Salary
0  20000000.0
1   5400000.0
2      2300.0

答案 1 :(得分:0)

这是一种破解方式。假定第一个字符为$,最后一个字符为MK

M = 1_000_000
K = 1_000
def salary_to_number(s):
    return float(s[1:-1]) * globals().get(s[-1])

输出:

>>>salary_to_number('$20M')
20000000
>>> salary_to_number('$5.4K')
5400.0

然后您可以使用df.apply

将此方法应用于数据框的列