python - 如何在熊猫数据框中按顺序获取最高、次高等数字的索引和列?
问题描述
我有一个通用形式的 pandas DataFrame(我们称之为df
)
A C D E F
0 0.4 0.1 0.2 0 0.7
1 0 0.2 0 0.5 0.6
2 0.1 0.5 0 0 0
3 0 0 0 0.8 0
4 0.8 0.1 0 0 0
5 0 0.9 0 0 0
虽然每个轴会更长(21 列,不同的索引长度)。
我需要在整个DataFrame中找到最大的数字,并提取索引和列名,然后是下一个最大的(如果不在同一个索引中)并再次找到索引和列名,依此类推。
我当然可以将每个索引提取为系列 ( pd.Index.to_series
) 或列表,并逐项进行。但我认为有一种更有效的方式使用数据帧(因为我无法预测最终将使用的最大索引大小),我似乎无法找到/想到。
如果我只需要的话,我已经找到了很多使用df.max()
or来获得最大值的答案。df.idmax()
解决方案
使用以下内容:
df.stack().reset_index().sort_values(by=0, ascending=False)
Out[168]:
level_0 level_1 0
26 5 C 0.9
18 3 E 0.8
20 4 A 0.8
4 0 F 0.7
9 1 F 0.6
8 1 E 0.5
11 2 C 0.5
0 0 A 0.4
6 1 C 0.2
2 0 D 0.2
10 2 A 0.1
1 0 C 0.1
21 4 C 0.1
27 5 D 0.0
28 5 E 0.0
25 5 A 0.0
24 4 F 0.0
23 4 E 0.0
22 4 D 0.0
15 3 A 0.0
19 3 F 0.0
17 3 D 0.0
16 3 C 0.0
14 2 F 0.0
13 2 E 0.0
12 2 D 0.0
7 1 D 0.0
5 1 A 0.0
3 0 E 0.0
29 5 F 0.0
推荐阅读
- php - 修改 Wordpress RSS Feed 的内容
- maven - Maven 和 Gradle:如果文件被修改,则重新编译
- c# - 返回 IEnumerable 类型的模拟方法
- flutter - Flutter web 在多个选项卡上共享相同的 websocket 连接
- windows - 如何使用自定义脚本扩展从 Azure 激活 Windows 上的网络驱动器?
- machine-learning - 根据不平衡类的 Precision 和 Recall 值选择哪个模型
- javascript - Flask - 将推荐人政策更改为“无推荐人”?
- python - Python。用 SUM 合并 dict 行
- python - 从快照创建中获取快照 ID
- python - Pip 升级问题 && Pytest 问题 && MAC OS 不合作