Python 按索引从max column获得列名的新列
我想创建一个新列,列名称为“按索引最大值” 领带将包括两列Python 按索引从max column获得列名的新列,python,pandas,Python,Pandas,我想创建一个新列,列名称为“按索引最大值” 领带将包括两列 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
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
期望输出
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
我尝试了以下代码
df.groupby(['TRDNumber'])[cols].max()
你可以做:
>>> 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
df.idxmax(axis=1)
使您接近,但不幸的是,它不处理关系,只给您第一列的最大值。