【发布时间】:2015-11-18 06:20:30
【问题描述】:
我有一个非常大的 pandas 数据框,大约有 500,000 列。每列大约有 500 个元素长。对于每一列,我需要检索列中前 k 个元素的(索引、列)位置。
所以,如果 k 等于 2,这是我的数据框:
A B C D
w 4 8 10 2
x 5 1 1 6
y 9 22 25 7
z 15 5 7 2
我想回来:
[(A,y),(A,z),(B,w),(B,y),(C,w),(C,y),(D,x),(D,y)]
请记住,我有大约 500,000 列,所以速度是我最关心的问题。有没有一种合理的方法可以在我的机器上花费一整周的时间?最快的方法是什么——即使它对于我拥有的数据量来说足够快?
感谢您的帮助!
【问题讨论】:
-
这里的问题是你真正想要返回什么,因为构造一个元组列表会很昂贵,例如
df.apply(lambda x: x.sort(inplace=False, ascending=False)[:2])会返回你想要的,但是NaN的值有点笨拙,可能不是你想要的
标签: sorting pandas indexing columnsorting