Ani*_*hra 2 python max dataframe pandas
我有一个数据框,如下所示:
column_1 column_2
2 3
6 4
5 5
.
.
.
Run Code Online (Sandbox Code Playgroud)
我想为上述数据帧的每一行返回该行中具有最大值的列的名称;例如,对于第一行,我想返回“column_2”,对于第三行,它将返回两个列名称,因为它们具有相同的值。
我尝试使用 Pandas 的 idxmax 函数来实现它;但这个函数只返回第一个出现的情况,而忽略其余的可能性;就像上面第三行的示例一样,idxmax 仅返回 'column_1' 而不是 ['column_1', 'column_2']。
任何想法如何解决这个问题。在此先感谢您的帮助。
对于每一行,您可以检查条目是否等于该行的最大值;这将形成一个布尔框架。然后,您可以dot将其与列名称相乘,以选择True为行提供的列名称:
is_max = df.eq(df.max(axis=1), axis=0)
result = is_max.dot(df.columns + " ")
Run Code Online (Sandbox Code Playgroud)
其中axis=1ofmax表示取每行的最大值,axis=0ofeq表示对齐参数(即,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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1684 次 |
| 最近记录: |