pandas - Pandas 中最大值的位置
问题描述
我有一个熊猫数据框,我想检索数据框中最大值的位置(行、列)。我能怎么做?
解决方案
样本:
df = pd.DataFrame({
'B':[4,5,4,5,5,4],
'C':[7,8,9,4,2,3],
'D':[1,3,5,7,1,0],
'E':[5,3,6,9,2,4],
})
首先,如有必要,仅通过以下方式获取数字DataFrame.select_dtypes
:
df = df.select_dtypes(np.number)
要返回 DataFrame 中的第一个最大值,请DataFrame.stack
使用Series.idxmax
:
print (df.stack().idxmax())
(2, 'C')
如果性能很重要,则通过与最大值比较来获取索引,numpy.where
并通过索引获取第一个值:
r, c = np.where(df == df.values.max())
print ((df.index[r[0]], df.columns[c[0]]))
(2, 'C')
如果需要所有最大值:
s = df.stack()
print (s.index[s == s.max()].tolist())
[(2, 'C'), (3, 'E')
print (list(zip(df.index[r], df.columns[c])))
[(2, 'C'), (3, 'E')]
推荐阅读
- html - 使用引导程序 btn-group-toggle 在烧瓶中检索复选框按钮值的问题
- python - 有没有办法将多个字符串添加到 Text 对象?(泽尔图形)
- terraform - Terraform 资源使用模块生成多个 key_pair
- docker - DreamFactory 如何在 docker 容器中禁用包装器“资源”
- spring - spring boot打包后找不到资源文件
- php - How can I scroll while I increase the size of a div with Resizable Jquery?
- scripting - 在 After Effects 中通过脚本添加效果
- c# - 如何在 FaceRecognition 项目的非托管代码中添加方法
- android - 启动画面错误:android.content.res.Resources$NotFoundException: Drawable
- python - 比较来自不同数据帧的两个系列,找到匹配的地方用第三个系列值替换