可能对你有用的是将潜在的“值”和任何潜在的“乘数后缀”分开,所以假设你的
df['Vehicle Value']
s = pd.Series(['25k', '1.25m', '100k', '500', '2.5k'])
我们的预期结果应该是
[25000, 1250000, 100000, 500, 2500]
. 所以我们要:
vm = s.str.extract('(?P<value>.*?)(?P<multiplier>[km])?$')
value multiplier
0 25 k
1 1.25 m
2 100 k
3 500 NaN
4 2.5 k
然后将乘数转换为一个数字(k=1000,m=1000000,如果没有指定一个,则将其保留为1),然后将该值与其相乘,例如:
df['Numeric Vehicle Value'] = pd.to_numeric(vm['value']) * vm['multiplier'].replace({'k': 1000, 'm': 1000000}).fillna(1)