2012-11-28 4 views
2

필자는 여러 행에 걸쳐 두 개의 열로 된 두 개의 데이터 세트를 집계하는 pandas pivot_table을 가지고 있습니다. 행별로 두 개의 기존 열에 집계 된 값의 차이 인 다른 열을 추가하고 싶습니다. pivot_table() 호출에서이를 직접 구현할 수있는 방법이 있습니까? 반환 된 피벗은 데이터 프레임이므로 다른 방법을 통해 계산할 수 있지만 더 효율적인 방법이 있는지 궁금합니다. 내 데이터의Python 피벗 테이블의 열 차이점

간단한 예 : 데이터가 내 DF

piv=pivot_table(data,'Val',rows='Type',cols='Set',aggfunc=sum,fill_value=0.0) 

어디는 ​​아래

S1 S2 
A 1 4 
B 5 5 
C 0 6 

를 얻을 다음 코드를 사용하여

Set  Type Val 
    S1  A  1 
    S1  B  2 
    S1  B  3 
    S2  A  4 
    S2  B  5 
    S2  C  6 

내가 출력을 싶습니다 be

S1 S2 Diff 
A 1 4 3 
B 5 5 0 
C 0 6 6 

하거나

Diff 
A 3 
B 0 
C 6 

답변

5

쉽습니다. 데이터 프레임 (및 일반적으로 행렬)을 사용하면 한 번에 여러 요소에서 쉽게 작업 할 수 있습니다.

적용 할 기능을 정의하십시오.

>>> def abs_diff(x, y): 
>>>  return abs(x - y) 

그런 다음 적용하십시오.

>>> df['Diff'] = abs_diff(df['S1'], df['S2']) 

>>> df 

    S1 S2 Diff 
A 1 4  3 
B 5 5  0 
C 0 6  6 

그리고 물론

, 당신은 단지 특정 열을 렌더링하고 싶은 경우는 : -

>>> df['Diff'] 

A 3 
B 0 
C 6 
Name: Diff 

+0

감사 (>>> 물론 파이썬 쉘 프롬프트이다), 나는 비슷한 일을 결국 . 팬더 피벗에 비슷한 기능이 내장되어 있는지 궁금합니다. – MattB