2017-12-06 14 views
1

이 GROUPBY와 팬더 0.20까지 이름을 변경하는 방법을 권장했다groupby()를 여러 열로 집계하고 Pandas 0.21+에서 다중 색인 이름을 바꾸는 방법은 무엇입니까?

__main__:1: FutureWarning: using a dict on a Series for aggregation 
is deprecated and will be removed in a future version 

경고 코드

import pandas as pd 
df = pd.DataFrame({'A': [1, 1, 1, 2, 2], 
        'B': range(5), 
        'C': range(5)}) 

df1 = df.groupby('A').B.agg({'B': ['count','nunique'],'C': ['sum','median']}) 
df1.columns = ["_".join(x) for x in df1.columns.ravel()] 

DF1 출력

B_count B_nunique C_sum C_median 
A          
1  3   3  3  1.0 
2  2   2  7  3.5 

. 이 경고없이 동일한 df1 출력을 얻는 우아한 방법은 무엇입니까?

+0

https://stackoverflow.com/questions/44635626/pandas-aggregation-warning-futurewarning-using-a-dict-with-renaming-is-depreca – Wen

답변

1

@Wen이 질문에 언급했듯이 agg 이전에 '.B'를 제거하고 agg의 사전이 적합합니다. 그런 다음 mapjoin을 사용하여 해당 다중 색인 열을 병합 할 수 있습니다.

import pandas as pd 
df = pd.DataFrame({'A': [1, 1, 1, 2, 2], 
        'B': range(5), 
        'C': range(5)}) 

df1 = df.groupby('A').agg({'B': ['count','nunique'],'C': ['sum','median']}) 
df1.columns = df1.columns.map('_'.join) 

출력 :

B_count B_nunique C_sum C_median 
A          
1  3   3  3  1.0 
2  2   2  7  3.5