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

时间:2017-11-29 07:38:32

标签: python pandas dataframe set max

我有50000行和50000列Pandas DataFrame,行索引来自[0 ... 50000],列索引也来自[0,... 50000],范围值为[0-1] < / p>

我想得到最大值的前n个,其中输出是[行索引,列索引和值本身]的元组列表,例如,输出为(1, 54, 1.0),(59,0,1.0)....etc

我使用了堆栈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)

1 个答案:

答案 0 :(得分:2)

如果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()