2017-04-03 3 views
2

로 인덱싱 팬더 행렬 변환 :dataframe 주어 평면 dataframe

df = pd.DataFrame([['foo', 123, 4, 5, 0, 1], ['foo', 123, 4, 0, 9, 1], ['bar', 33, 0, 0, 3, 5]], columns=list('ABCDEF')) 

[출력] : 목표는 특정 열 ('C', 'D'를 합산하는

A B C D E F 
0 foo 123 4 5 0 1 
1 foo 123 4 0 9 1 
2 bar 33 0 0 3 5 

, 'E', F ') (다른 컬럼을 사용하여 "키를 달성하기 A'및 'B')를 :

A B C D E F 
0 foo 123 8 5 9 2 
2 bar 33 0 0 3 5 

I을 해봤 :

[OUT]
df.groupby(['A', 'B']).sum() 

:

 C D E F 
A B    
bar 33 0 0 3 5 
foo 123 8 5 9 2 

어떻게 비 인덱스 행렬로 다시 변경하려면 어떻게해야합니까? 즉

A B C D E F 
0 foo 123 8 5 9 2 
2 bar 33 0 0 3 5 

답변

2

.reset_index()을 추가해야합니다.

df.groupby(['A','B']).sum().reset_index() 

    A B C D E F 
0 bar 33 0 0 3 5 
1 foo 123 8 5 9 2 

또는

df.set_index(['A','B']).sum(level=[0,1]).reset_index() 

    A B C D E F 
0 bar 33 0 0 3 5 
1 foo 123 8 5 9 2 
당신은 반환 df에 대한 매개 변수 as_index=False을 사용할 수 있습니다
2

:

df1 = df.groupby(['A', 'B'], as_index=False).sum() 
print (df1) 
    A B C D E F 
0 bar 33 0 0 3 5 
1 foo 123 8 5 9 2