当前位置: 首页 > 面试题库 >

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

宋伯寅
2023-03-14
问题内容

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

所以像这样:

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(行)



 类似资料:
  • 问题内容: 我想对以下数据框进行排序: 我想对它进行排序,以便根据列表对LSE列进行重新排序: 当然,其他列也需要相应地重新排序。有没有办法在熊猫里做到这一点? 问题答案: pandas0.15版中对s的改进支持使您可以轻松做到这一点: 如果这只是临时排序,则可能不希望将LSE列保留为a ,但是如果您希望这种排序能够在不同的上下文中使用几次,则是一个很好的解决方案。 在更高版本的,中,已被替换为,

  • 问题内容: 我有python pandas dataframe,其中一列包含月份名称。 如何使用字典进行自定义排序,例如: 问题答案: 熊猫0.15引入了“分类系列”,该分类系列提供了一种更清晰的方法: 首先,将月份列设为分类,然后指定要使用的顺序。 现在,当您对月份列进行排序时,它将相对于该列表进行排序: 注意:如果值不在列表中,它将被转换为NaN。 对于那些有兴趣的人来说,是一个较旧的答案。

  • 问题内容: 我有一个熊猫数据框,如下所示: 我想按它排序,但该列只是一个。 我试图将列设置为日期对象,但是遇到了一种格式不需要的格式的问题。所需的格式为等。 因此,现在我试图找出如何使numpy将“美国”日期转换为ISO标准,以便可以使它们成为日期对象,以便可以对它们进行排序。 我该如何将这些美国日期转换为ISO标准,或者我在熊猫中缺少更直接的方法? 问题答案: 您可以用来转换为日期时间对象。它带

  • 问题内容: 我的数据框看起来像这样,只是更大了。 首先,我尝试对每个列进行单独排序。我试过玩类似的东西:但是最终只会出错。如何分别对每一列进行排序,以得到类似以下内容的结果: 其次,我希望将列中的行连接起来 在用’‘替换np.nan之后,我可以将所有内容与上面的行结合起来,但是结果一起被粉碎(’AB’),并且需要额外的步骤来清理(变成’A:B’之类)。 问题答案: 这是一种方法: 但是,您所做的有

  • 问题内容: 我有一个简单的数据框,我想每3行进行装箱。 看起来像这样: 我想把它变成这样: 你能帮我吗? 非常感谢! 问题答案: 在Python 2中使用:

  • 我想使用两列作为行ID,同时计算基于时间的分组。请看下图: 转化成这样: 正在发生的是,X在时间10发生了0次,但在15和23发生了1次。 Y在10点钟发生了3次,但在15和23没有。等等。