2013-12-11 1 views
0

팬더 0.11을 사용하면 데이터 프레임에 합계를 설정할 때 버그 (또는 적어도 비 직관적 인 동작)가있는 것 같습니다. 어떤 충고?팬담 스 문제 발생

p = pandas.DataFrame({ 'x' : [1,2,3], 'y' : [1,2,3] }) 
sumOfP = p.sum() #Gives a Series of [6,6]. OK. 
totals = pandas.DataFrame({ 'someOtherSeries' : [1,2]) 
totals['sumOfP'] = sumOfP #BAD! This is now [nan, nan] 

나는 총합 [sumOfP]이 [6,6] 이길 기대합니다. 그럼 왜 그게, 아니야?

답변

2

색인에 맞추기 때문입니다. p.sum()에서 자세히 살펴보기 :이 xy에 의해 색인을 생성 Series, 당신은 0과 중대 1의 인덱스와 DataFrame에 새 열로 벼락 공부하려는

>>> sumOfP = p.sum() 
>>> sumOfP 
x 6 
y 6 
dtype: int64 

totals 말한다 프레임,하지만 인덱스 0과 1에서 "sumOfP"열에 무엇을 넣어야하는지 알려주지 않았다. 그리고 나는 추측하지 않을 것이다. 당신이 인덱스를 무시하고 싶다면 당신은 단지 당신이 원하는 경우에 값을 넣을 수

>>> p = pandas.DataFrame({ 0 : [1,2,3], 'y' : [1,2,3] }) 
>>> totals["sumOfP"] = p.sum() 
>>> totals 
    someOtherSeries sumOfP 
0    1  6 
1    2  NaN 

[2 rows x 2 columns] 

을 :

>>> totals["sumofP"] = sumOfP.values 
>>> totals 
    someOtherSeries sumofP 
0    1  6 
1    2  6 

[2 rows x 2 columns] 

또는 사전 색인 재설정 : 비교

>>> sumOfP.reset_index(drop=True) 
0 6 
1 6 
dtype: int64 
>>> totals["sumOfP"] = sumOfP.reset_index(drop=True) 
>>> totals 
    someOtherSeries sumOfP 
0    1  6 
1    2  6 

[2 rows x 2 columns]