【问题标题】:How to sort all columns independently in ascending order in a pandas dataframe?如何在熊猫数据框中按升序对所有列进行独立排序?
【发布时间】:2020-06-23 15:57:27
【问题描述】:

我想按升序对数据框中的所有列进行独立排序。我的数据框如下:

date,A,B,C,D
1989-12-31,540.8,497.351,757.9,649.811
1990-12-31,388.9,453.65,454.2,714.898
1991-12-31,796.3,170.308,1080.4,274.678
1992-12-31,427.7,304.587,695.6,414.898

我已经手动尝试过:

df1=df.sort_values(by=['A','B','C','D'],axis=0, inplace=True)

date,A,B,C,D
1990-12-31,388.9,453.65,454.2,714.898
1992-12-31,427.7,304.587,695.6,414.898
1989-12-31,540.8,497.351,757.9,649.811
1991-12-31,796.3,170.308,1080.4,274.678

但正如您所见,它仅适用于“A”列。

我必须在每一列上做一个循环吗?

有没有更简单的方法?我查看了排序手册,但我无法弄清楚。

谢谢

【问题讨论】:

  • df.iloc[:,1:]=np.sort(df.iloc[:,1:].to_numpy(),axis=0) ?
  • 我找到了这个。很优雅 df=df.transform(np.sort) 你怎么看?
  • 确实很不错..不知道你可以在转换中传递np.sort

标签: python pandas sorting multiple-columns


【解决方案1】:

您的代码有效 - 但排序的工作方式是它是分层的,如果 A 列中的每个值都不同,那么它将首先在 A 列上强制排序。然后它将在 B 列上对所有实例进行排序是 A 中相同值的倍数,并且对于 C 仅当存在 A 和 B 相同但 C 不同的实例时。

但是 - 您在 A 中显示的所有值都彼此不同,因此它只会使用此方法基于 A 进行排序。

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 2019-04-12
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多