python - 对 Pandas 数据框中的每一行进行排序的最快方法

标签 python performance pandas

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

所以像这样:

A   B   C   D
3   4   8   1
9   2   7   2

需要成为:

A   B   C   D
8   4   3   1
9   7   2   2

现在我正在对每一行应用排序并逐行构建一个新的数据框。我还对每一行做了一些额外的、不太重要的事情(因此我使用 pandas 而不是 numpy)。创建一个列表列表然后立即构建新数据框会更快吗?或者我需要使用 cython 吗?

最佳答案

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

啊,pandas 提高了:

In [22]: df.sort(df.columns, axis=1, ascending=False)

ValueError: When sorting by column, axis must be 0 (rows)

关于python - 对 Pandas 数据框中的每一行进行排序的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817930/

相关文章:

python - 在 numpy 数组中计算值发生更改之前的长度以及转换次数的最佳方法(最好是 numpythonic)?

python - 如何让聊天机器人识别小写和大写的答案

python - 为什么我能够在 Python 中实例化我的抽象基类?

mysql - 对 MySQL DATE 或 TIME 列的整数查询速度慢吗?

java - 工作灯 : Performance of calling java static method vs object creation

python - 如何从 pandas 中的一系列数据帧中删除空数据帧?

python - 如何安全地创建变量名的SQLite3数据库

performance - 我可以每 1-2 分钟运行一次 PostgreSQL Vacuum 吗?

linux - 导入错误 : cannot import name 'init_osx_clipboard'

python - 根据列(字符串)对 pandas 中的 CSV 进行排序