2014-12-16 4 views
2

팬더 데이터 프레임이 있습니다. 내 목표는 열 C가 그룹 B 내에서 가장 큰 값을 갖는 행만 선택하는 것입니다. 예를 들어 B가 "1"일 때 C의 최대 값은 311이므로 C = 311 및 B = " 하나."팬더 데이터 프레임의 파티션 내 최대 선택

import pandas as pd 
import numpy as np 

df2 = pd.DataFrame({ 'A' : 1., 
    'A' : pd.Categorical(["test1","test2","test3","test4"]), 
    'B' : pd.Categorical(["one","one","two","two"]), 
    'C' : np.array([311,42,31,41]), 
    'D' : np.array([9,8,7,6]) 
    }) 

df2.groupby('C').max() 

출력해야한다 :

test1 one 311 9 
test4 two 41 6 
+0

문제는 연결 오늘 아침 (미국 태평양 시간) –

+0

문제에'폴 H '해결책을 적용하면 다음과 같이됩니다 :'df2.groupby ('B '). apply (lambda : k [k ['C '] == k ['C '].)' – Akavall

답변

2

당신은 최대 값의 인덱스를 반환 idxmax()을 사용할 수 있습니다

maxes = df2.groupby('B')['C'].idxmax() 
df2.loc[maxes] 

는 출력 :

Out[11]: 
     A B C D 
0 test1 one 311 9 
3 test4 two 41 6 
관련 문제