2014-06-12 3 views
2

데이터 세트를 그룹화하기 위해 팬더를 사용합니다. 서로 다른 열을 집계 할 때 계층 적 열 구조가 생깁니다. 에서groupby 이후 팬더의 계층 형 열에 액세스

G1 = df.groupby('date').agg({'col1': [sum, np.mean], 'col2': 'sum', 'col3': np.mean}) 

결과 :

  col1    col2  col3 
       sum  mean  sum  mean 
date 
2000-11-01 1701 1.384052 82336 54.222945 
2000-11-02 11101 1.447894 761963 70.027260 
2000-11-03 11285 1.479418 823355 77.984268 

나는 불행하게도 워드 프로세서에서이 결과 구조에 대한 너무 많이 찾을 수 없습니다. 판다 문서에서 내가 발견 한 유일한 것은 계층 적 다중 색인이었다.

어떻게 값에 액세스 할 수 있습니까? 는 현재 내가 할 : X['col1']['mean']가 액세스 전체 Series

2000-11-01 1.384052 
2000-11-02 1.447894 
2000-11-03 1.479418 

따라서 X['col1']['mean'][1]는 값 1.447894을 얻을 수 있지만, 어떤 결과 ([ 'COL1'] X)이 코드 첫번째 조각 col1 때문에, 성능에 대해 궁금해 실제로는 2 개의 열을 포함하는 뷰/복사 (이 경우에는 dunno)에있는 다음, mean-column의 또 다른 조각이 있습니다.

팁이 있습니까? 문서의 계층 형 열 생성에 대한 자세한 내용은 어디에서 확인할 수 있습니까?

답변

4

조언은 체인을 사용하지 않고 한 번에 수행하기 때문에 가비지 수집중인 뷰와 수정에 할당하는 대신 할당을 수행 할 수 있습니다.

액세스 튜플로 MultiIndex * 열 :

In [11]: df[('col1', 'mean')] 
Out[11]: 
date 
2000-11-01 1.384052 
2000-11-02 1.447894 
2000-11-03 1.479418 
Name: (col1, mean), dtype: float64 

및 LOC를 사용하여 특정 값 :

In [12]: df.loc['2000-11-01', ('col1', 'mean')] 
Out[12]: 1.3840520000000001 

(라벨, LOC, 위치, iloc를 혼합하려면 사용해야합니다 IX)

In [13]: df.ix[0, ('col1', 'mean')] 
Out[13]: 1.3840520000000001 

*이 A는 멀티 인덱스.

+0

대단히 감사합니다. 그래, 나는 연쇄를 피하기 위해 내 가정에 옳았다. 이것들이 실제로 MultiIndexes라고 불리는 것을 명확히하기위한 Thx; 나는이 이름이 행의 MultiIndexing에만 적용된다고 생각했다. 그러나 유추를 본다. 특히 DataFrame을 쉽게 바꿀 수 있기 때문에 (그리고 여전히 MultiIndex를 유지해야하기 때문). – tim