我有一个看起来像这样的数据框:
case inc_date is1 is5 is10 im1 im5 im10
686 6/8/1972 0.141 0.300 0.149 0.134 0.135 0.142
950 6/1/1945 0.160 0.345 0.172 0.088 0.096 0.138
1005 10/16/1945 0.164 0.261 0.151 0.131 0.261 0.133
1005 11/12/1947 0.146 0.310 0.182 0.112 0.129 0.121
1180 10/9/1945 0.159 0.278 0.134 0.141 0.138 0.150
我想找出每一行的最大值,然后返回值最大的列名。例如,对于上述数据框,它将返回:
686 is5
950 is5
1005 is5, im5
1005 is5
1180 is5
最佳答案
您可以将idxmax与axis=1
一起使用,以查找每行中具有最大值的列:
1 is5
2 is5
3 is5
4 is5
5 is5
要创建新列“ Max”,请使用
df['Max'] = df.idxmax(axis=1)
。若要查找在每一列中出现最大值的行索引,请使用
df.idxmax()
(或等效地df.idxmax(axis=0)
)。对于第二高,您可以使用
df.apply(lambda x: df.index[x.argsort()[::-1][1]], axis=1)