2013-12-12 73 views
2

我想將一個整數變量「重新編碼」爲Pandas中的浮點變量。但這似乎並不像我預期的那樣工作。基本上我有一個1-6的比例,我想分配新的值。熊貓 - 用浮點數替換整數

我目前的做法有一個例子:

df2 = pd.DataFrame({ 
    'A' : [1,2,3,4,5] 
}) 

df2['B'] = df2['A'].replace([1, 2, 3, 4, 5], [1, 0.85, 0.70, 0.55, 0.40]) 

print df2 

結果:

A B 
0 1 1 
1 2 0 
2 3 0 
3 4 0 
4 5 0 

什麼是這樣做的正確方法?

回答

4
>>> df2['A'].astype(float).replace([1, 2, 3, 4, 5], [1, 0.85, 0.70, 0.55, 0.40]) 
0 1.00 
1 0.85 
2 0.70 
3 0.55 
4 0.40 
Name: A, dtype: float64 

可能是更合適的方式來做到這一點是使用pandas.Series.map()

>>> df2['A'].map(dict(zip([1, 2, 3, 4, 5], [1, 0.85, 0.70, 0.55, 0.40]))) 
0 1.00 
1 0.85 
2 0.70 
3 0.55 
4 0.40 
Name: A, dtype: float64 
+0

再次感謝!完美的作品! – madflow