小编典典

排序熊猫数据框中每一行的最快方法

python

我需要找到最快的方法来对具有数百万行和约一百列的数据框中的每一行进行排序。

所以像这样:

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)。改为创建列表列表,然后立即构建新的数据框,会更快吗?还是我需要去赛顿?


阅读 141

收藏
2020-12-20

共1个答案

小编典典

我想我会在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(行)

2020-12-20