我想知道是否有办法找到数据框中最高值的位置(列和行索引) . 所以,例如,如果我的数据框看起来像这样:
A B C D E
0 100 9 1 12 6
1 80 10 67 15 91
2 20 67 1 56 23
3 12 51 5 10 58
4 73 28 72 25 1
如何获得如下所示的结果: [0, 'A']
使用Pandas?
6 回答
使用np.argmax
NumPy的
argmax
可以提供帮助:步骤
df.values
是一个二维NumPy数组:argmax
为您提供"flattened"数组最大值的索引:现在,您可以使用此索引查找堆叠数据帧上的行列位置:
快速替代方案
如果您需要快速,请尽可能少地执行 . 仅在NumPy数组上工作以查找索引
np.argmax
似乎是最好的:结果:
时间
时序最适合lareg数据帧:
排序最慢到最快:
面具:
Stack-idmax
Stack-argmax
哪里
Argmax-unravel_index
比较
输出:
因此,对于大数据帧,“Argmax-unravel_index”版本似乎要快一到两个数量级,即通常速度最重要的地方 .
使用stack为
Series
与MultiIndex
和idxmax作为最大值的索引:详情:
mask
max
在我看来,对于更大的数据集,stack()变得效率低下,让我们使用
np.where
来返回索引位置:输出:
更大的数据名称的时间:
np.where方法
其他堆栈方法
更大的数据帧:
分别:
这应该工作:
这使用idxmax函数,然后比较它返回的所有值 .
用法示例:
这是一个单行(为了好玩):
这是imho的最佳方式 .