对大型熊猫数据框上的每一列进行排序

时间:2019-03-05 15:44:48

标签: python pandas

我正在使用for循环对非常大的pandas数据框的每一列进行排序。但是,此过程将花费很长时间,因为数据框具有超过一百万列。我希望这个过程比现在运行的快得多。

这是我目前的代码:

top25s = []
for i in range(1, len(mylist)):
    topchoices = df.sort_values(i, ascending=False).iloc[0:25, 0].values 
    top25s.append(topchoices)

这里len(mylist)是14256,但将来很容易会超过1000000。 df的尺寸为343行×14256列。

感谢您的所有投入!

2 个答案:

答案 0 :(得分:0)

您可以使用nlargest

df.apply(lambda x: x.nlargest(25).reset_index(drop=True))

但是我怀疑这会为您赢得很多时间。如前所述,您只是需要处理大量数据。

答案 1 :(得分:0)

我建议使用numpy的帮助。哪个可以大大加快速度。

以下代码将返回一个二维numpy数组,其中每列中有top25个元素。

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(50,100)) # Generate random data

rank = df.rank(axis = 0, ascending=False)
top25s = np.extract(rank<=25, df).reshape(25, 100)