2013-03-25 2 views
-1

데이터 백분율을 계산할 데이터 프레임이 있습니다. 그러나이를 시도 할 때 파이썬은 0 또는 1을 반환합니다.한 DataFrame 열 합계를 다른 DataFrame 열 합계로 나눕니다. 0

예를 들어, 열 OIR.a1.d.bullOIR.a1r1.d은 1과 0으로 채워진 배열입니다.

>>> data['OIR.a1.d.bull'].sum() 
653 
>>> data['OIR.a1r1.d'].sum() 
320 
>>> den = data['OIR.a1.d.bull'].sum() 
>>> num = data['OIR.a1r1.d'].sum() 
>>> den 
653 
>>> num 
320 
>>> num/den 
0 

나는 대략 다음과 같습니다.

>>> num/den 
0.49004594 
+3

'1.0 * num/deny –

+0

이 작동합니다. 왜? 정수로 변환하고 반올림하고 있습니까? – Brian

+0

[PEP 238] (http://www.python.org/dev/peps/pep-0238/)을 참조하십시오. –

답변

0

결과가 정수가 될 수 있도록 정수 나누기를 수행하므로 나누기 결과의 소수 부분이 잘 리게됩니다. float을 얻으려면 값 중 하나를 float로 변환해야합니다.

float(num)/den 
+0

OP는 Python 2.7을 사용하기 때문에'from __future__ import division'을 수행 할 수도 있습니다. –

+2

@StevenRumbalski 당신이 옳았는데이 정보를 추가하는 것을 고려했지만, OP는 부동 소수점 분할로 끝날 때 깨질 코드의 다른 부분에서 엄격한 int division을 위해'/'를 사용합니다. – halex