pandas idxmax return 所有具有最大值的列

pandas idxmax return all columns with maximum value

我有一个如下所示的数据框:

column_1    column_2
2           3
6           4
5           5
.
.
.

我想 return 对于上述数据框的每一行,在该行中具有最大值的列的名称;例如,对于第一行,我想要 return 'column_2',对于第三行,它将 return 两个列名,因为它们具有相同的值。

我试过用Pandas的idxmax函数来实现;但是这个函数 return 只是第一次出现并且忽略了其余的可能性;就像上面第三行的例子,idxmax returns only 'column_1' 而不是 ['column_1', 'column_2'].

知道如何解决这个问题。预先感谢您的帮助。

对于每一行,您可以检查条目是否等于该行的最大值;这将形成一个布尔框架。然后,您可以 dot 使用列名对其进行乘积,以选择那些为行提供 True 的列名:

is_max = df.eq(df.max(axis=1), axis=0)
result = is_max.dot(df.columns + " ")

其中 maxaxis=1 表示取每行的最大值,eqaxis=0 表示将参数(即 df.max(axis=1))对齐到按行比较,即广播如此),

获得

>>> is_max

   column_1  column_2
0     False      True
1      True     False
2      True      True

>>> result

0             column_2
1             column_1
2    column_1 column_2