python - 如何在pandas python库中隔离数据框中的最大值
问题描述
我正在尝试在 python 的 pandas 数据框中隔离并打印最大值。
# Data frame:
df
>> 0 A B C
0 0 0 0 0
A 0 -3 -3 5
B 0 -3 -6 2
C 0 5 0 -3
D 0 5 2 -3
E 0 0 10 5
F 0 -3 5 15
我设法使用以下代码隔离了该值:
x = df.max(axis=0)
maxValue = max(x)
maxValue
>> 15
但是我怎样才能访问这个元素呢?有没有办法遍历数据框的元素,这样
for elements in df:
if element == maxValue:
m = element
或者那些线上的东西?我需要找到最大的元素,在本例中为 15,并在本例中检索其位置,即 (C,F)。然后我需要存储它,然后找到第一个周围的下一个最大元素及其位置。
# desired output
[(C,F), (B,E), (A,D)]
我希望这是有道理的!任何关于我如何实现这一点的建议将不胜感激!:)
解决方案
我理解问题是有必要对最大值进行排序,所以使用 if nedd omit first column DataFrame.iloc
,然后DataFrame.agg
对于最大值的位置,max
将它们排序为DataFrame.sort_values
,选择它Series
并最后转换为元组列表:
L = (list(df.iloc[:, 1:]
.agg(['idxmax','max'])
.sort_values('max', axis=1, ascending=False)
.loc['idxmax'].items()))
print (L)
[('C', 'F'), ('B', 'E'), ('A', 'C')]
对于所有列删除iloc
:
L = (list(df.agg(['idxmax','max'])
.sort_values('max', axis=1, ascending=False)
.loc['idxmax'].items()))
print (L)
[('C', 'F'), ('B', 'E'), ('A', 'C'), ('0', '0')]
推荐阅读
- javascript - 读取带有希伯来语内容的 CSV 文件
- c++ - 为什么 OpenCV 调用 UMat 操作有时需要半秒才能完成?
- filepond - FilePond 设置初始文件
- javascript - 登录无法从 req.body 获取值,导致无法读取未定义的属性“密码”的问题
- c - 控制如何到达这个非空函数的末尾?
- java - 如何去掉spring boot权限做数据库结构改动
- authentication - 如何让我的注册功能自动登录(HTML、Flask、Python)
- typescript - RxJS 获取 Observable 发射前后的值
- database - SQLite:新表和列的逗号分隔值
- ios - 访问用户之前在 iOS 上取消、升级或删除的订阅的接收数据信息