2013-12-12 4 views
2

팬더에서 정수 변수를 부동 변수로 "다시 코딩"하려고합니다. 그러나 이것은 예상했던 것처럼 작동하지 않는 것 같습니다. 기본적으로 새로운 값을 할당하려는 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