2017-07-18 110 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