我有 50000 行和 50000 列的 Pandas DataFrame,行索引从 [0...50000] 开始,列索引也从 [0,....50000] 开始,范围值为 [0-1]
我想获取前n个最大值,输出为[行索引、列索引和值本身]的元组列表,例如输出为 (1, 54, 1.0),(59,0,1.0)....等
我使用了堆栈df.stack().nlargest(7)
并得到了结果
0 21 1.0
22 1.0
23 1.0
24 1.0
26 1.0
27 1.0
28 1.0
dtype: float64
我无法将这些输出转换为元组,而且看起来很慢。 还有比这更好的其他方法吗?或者如何将堆栈结果转换为元组。
期望输出:
(0, 21, 1.0)
(0, 22, 1.0)
(0, 23, 1.0)
(0, 24, 1.0)
最佳答案
如果 s
是您的系列,则可以使用:
s.reset_index().apply(tuple,1)
0 (0.0, 21.0, 1.0)
1 (0.0, 22.0, 1.0)
2 (0.0, 23.0, 1.0)
3 (0.0, 24.0, 1.0)
4 (0.0, 26.0, 1.0)
5 (0.0, 27.0, 1.0)
6 (0.0, 28.0, 1.0)
dtype: object
如果您希望输出为列表,则添加 .tolist()
关于python - 从Pandas DataFrame中获取最大值的行索引和列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47547392/