我需要找到最快的方法来对具有数百万行和约一百列的数据框中的每一行进行排序。
所以像这样:
A B C D 3 4 8 1 9 2 7 2
需要成为:
A B C D 8 4 3 1 9 7 2 2
现在,我将排序应用于每一行,并逐行建立一个新的数据框。我还在每行中做一些额外的,不太重要的事情(因此为什么我使用熊猫而不是numpy)。改为创建列表列表,然后立即构建新的数据框,会更快吗?还是我需要去赛顿?
我想我会在numpy中这样做:
In [11]: a = df.values In [12]: a.sort(axis=1) # no ascending argument In [13]: a = a[:, ::-1] # so reverse In [14]: a Out[14]: array([[8, 4, 3, 1], [9, 7, 2, 2]]) In [15]: pd.DataFrame(a, df.index, df.columns) Out[15]: A B C D 0 8 4 3 1 1 9 7 2 2
我曾以为这可能有效,但是它对列进行了排序:
In [21]: df.sort(axis=1, ascending=False) Out[21]: D C B A 0 1 8 4 3 1 2 7 2 9
啊,熊猫提出了:
In [22]: df.sort(df.columns, axis=1, ascending=False)
ValueError:按列排序时,轴必须为0(行)