python - 从Pandas DataFrame中获取最大值的行索引和列索引

标签 python pandas dataframe set max

我有 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/

相关文章:

python - 为 pandas 中的所有列生成列矩阵

python - 如何将具有重复索引条目的数据帧与具有唯一索引条目的数据帧合并?

python - Pandas 搜索字符串的特定列

python - 将其他文件中的函数添加到 Python 类中

python - 从 Tkinter 调用可执行文件时出错

python - python递归中的链表

python - 用其他列值填充 NaN 列,复制新行

python - 将相同的选择(剪切)应用于多个数据框

python - 循环生成子图时出错

python - 获取 Flask 请求的引用 URL