2014-10-14 3 views
9

팬더의 dataframe.agg() 함수에 대해 서로 다른 두 가지 구문을 결합하는 방법을 파악하는 데 어려움을 겪고 있습니다. 이 간단한 데이터 프레임을 가지고 : 당신이 agg()에 두 가지 기능을 보낼 수 있습니다 알고Python Pandas : 인수가있는 agg()에 여러 함수 전달

df = pd.DataFrame({'A': ['group1', 'group1', 'group2', 'group2', 'group3', 'group3'], 
        'B': [10, 12, 10, 25, 10, 12], 
        'C': [100, 102, 100, 250, 100, 102]}) 

>>> df 
[output] 
     A B C 
0 group1 10 100 
1 group1 12 102 
2 group2 10 100 
3 group2 25 250 
4 group3 10 100 
5 group3 12 102 

을 각각의 기능은 각 컬럼에 적용되는 새로운 데이터 프레임 수 :

df.groupby('A').agg([np.mean, np.std]) 

[output] 
      B    C    
     mean  std mean   std 
A           
group1 11.0 1.414214 101 1.414214 
group2 17.5 10.606602 175 106.066017 
group3 11.0 1.414214 101 1.414214 

을 그리고 난 당신이 통과 할 수있어 하나의 함수에 대한 인수 :

그러나 하나 또는 둘 모두의 인수와 함께 여러 함수를 전달할 수있는 방법이 있습니까? 나는 문서에서 df.groupby('A').agg([np.mean, (np.std, ddof=0)])과 같은 것을 발견하기를 희망했지만, 지금까지 운이 없다. 어떤 아이디어?

답변

13

글쎄, 합계의 docs은 사실 약간 부족합니다. 올바른 인수 전달을 통해이를 처리 할 수있는 방법이있을 수 있으며이를 위해 판다 소스 코드를 살펴볼 수 있습니다 (아마도 나중에 사용하게 될 것입니다).

df.groupby('A').agg([np.mean, lambda x: np.std(x, ddof=0)]) 

을 그리고 그냥 잘 작동 :

그러나, 당신은 쉽게 할 수 있습니다.

+0

영리한! 그게 내가 필요한거야. – BringMyCakeBack

+6

2 람다 함수를 전달하는 것은 어떨까요? 머리글에 문제가 있습니다. – Dickster

관련 문제