2017-02-22 2 views
1

, I는열에 의해 열 B 그룹핑 두 그룹 크기와 분 얻기 A A DataFrame <code>df</code> 주어

df.groupby(['columnA']).size() 

각 그룹 내의 열 B의 mimimun 값으로 탑 A에 의해 그룹의 크기를 얻을 수있다

df.groupby(['columnA']).agg({'columnB':min}) 

또는

df.groupby(['columnA'])['columnB'].min() 

하지만 난 어떻게 OBT 수 (구문 설탕 것 같아요) 그런 2 열을 가진 DataFrame을 직접? SQL에서

, 그것으로,이 단서에 미리 간단

SELECT count(columnA), min(columnB) FROM table GROUP BY columnA 

감사합니다 것 당신이 편안합니다.

답변

1

에 두 개를 입력하면 agg에 함수 목록이 허용되므로 작동해야합니다.

>>> df 
    columnA columnB columnC 
0 cat1  3  400 
1 cat1  2  20 
2 cat1  5  3029 
3 cat2  1  492 
4 cat2  4  30 
5 cat3  2  203 
6 cat3  6  402 
7 cat3  4  391 

>>> df.groupby(['columnA']).columnB.agg(['size', 'min']) 
     size min 
columnA   
cat1  3 2 
cat2  2 1 
cat3  3 2 

>>> df.groupby(['columnA']).agg(['size', 'min']) 
     columnB  columnC  
      size min size min 
columnA       
cat1   3 2  3 20 
cat2   2 1  2 30 
cat3   3 2  3 203 

agg는 열의 딕셔너리 받아 -> 기능을, 그래서 당신은 개별적으로 당신이

df.groupby(['columnA']).agg({'columnA':'size','columnB':'min‌​'}) 
처럼 (여기을 필요하지 을) 뭔가 그렇게 할 수있는 각각의 컬럼에 함수를 매핑 할 것 인
+0

첫 번째 대답'df.groupby ([ 'columnA']). agg ({ 'columnA': '크기', 'columnB': 'min'})'는 실제 세계에서 더 일반적이며 유용했습니다. 다시 추가하는 것이 좋습니다. – mmj

+0

@ mmj 물론, 나는 dicts를 사용하는 것에 대한 광고문을 추가 할 수있다. – miradulo

+0

다음 질문에 대한 후속 작업에 관심이 있습니다. http://stackoverflow.com/q/42399574/694360 – mmj