2017-07-18 81 views

回答

2

鉴于这是数据框的样子

data: 
    index values 
    0 10k 
    1 11k 

你可以做

data['values'].str.replace('k','000') 

,让你

0 10000 
1 11000 
+0

甜谢谢! – Simon

+1

要小心''10.1k'这种方法 – gereleth

+1

好点。在这种情况下,您可以执行data ['values']。str.replace('k',''“)。astype(float)* 1000 – Gayatri

0

这里是一个比较通用的方法:

In [24]: df 
Out[24]: 
    a  b 
0 aaa 111 
1 bbb 12.5K 
2 ccc 0.03M 

In [25]: mp = {'K':' * 10**3', 'M':' * 10**6'} 

In [26]: df['c'] = pd.eval(df.b.replace(mp.keys(), mp.values(), regex=True).str.replace(r'[^\d\.\*]+','')) 

In [27]: df 
Out[27]: 
    a  b  c 
0 aaa 111 111 
1 bbb 12.5K 12500 
2 ccc 0.03M 30000 

说明:

In [28]: df.b.replace(mp.keys(), mp.values(), regex=True) 
Out[28]: 
0    111 
1 12.5 * 10**3 
2 0.03 * 10**6 
Name: b, dtype: object