2014-12-01 3 views
3

색인별로 최대 값에 대한 열 이름으로 새 열을 만들고 싶습니다.색인 열로 최대 열의 열 이름이있는 새 열

타이는 두 열을 모두 포함합니다.

   A B C D 
    TRDNumber     
ALB2008081610 3 1 1 1 
ALB200808167 1 3 4 1 
ALB200808168 3 1 3 1 
ALB200808171 2 2 5 1 
ALB2008081710 1 2 2 5 

나는 다음과 같은 코드

df.groupby(['TRDNumber'])[cols].max() 
을 시도

   A B C D Best 
    TRDNumber     
ALB2008081610 3 1 1 1 A 
ALB200808167 1 3 4 1 C 
ALB200808168 3 1 3 1 A,C 
ALB200808171 2 2 5 1 C 
ALB2008081710 1 2 2 5 D 

출력 당신이 할 수있는

+0

'df.idxmax을 (축 = 1)'얻는다 너는 끝내지 만 유감스럽게도 넥타이를 다루지 않는다. 너에게 처음 열을 줄 뿐이다. n은 최대 값을가집니다. – Marius

답변

2

원하는 :

>>> f = lambda r: ','.join(df.columns[r]) 
>>> df.eq(df.max(axis=1), axis=0).apply(f, axis=1) 
TRDNumber 
ALB2008081610  A 
ALB200808167  C 
ALB200808168  A,C 
ALB200808171  C 
ALB2008081710  D 
dtype: object 
>>> df['best'] = _ 
>>> df 
       A B C D best 
TRDNumber      
ALB2008081610 3 1 1 1 A 
ALB200808167 1 3 4 1 C 
ALB200808168 3 1 3 1 A,C 
ALB200808171 2 2 5 1 C 
ALB2008081710 1 2 2 5 D 
관련 문제