我有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)
答案 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()