【问题标题】:How to sort dataframe rows by multiple columns [duplicate]如何按多列对数据框行进行排序[重复]
【发布时间】:2022-01-11 01:02:40
【问题描述】:

我无法以特定样式格式化数据框。我希望将与一个S/N 相关的数据全部聚集在一起。我对数据集的最终目标是绘制所有S/Ns 的 Dis vs Rate。我已经厌倦了遍历行来切片数据,但这并没有奏效。这种格式的最佳(最简单)方法是什么。谢谢!

例如:S/N 332 在第一行有Dis 4.6 和Rate 的91.2,紧接着我希望它有S/N 332 和Dis 9.19 和Rate 76.2 等等对于所有带有S/N 332 的行。

    S/N      Dis       Rate
0   332   4.6030  91.204062
1   445   5.4280  60.233917
2   999   4.6030  91.474156
3   332   9.1985  76.212943
4   445   9.7345  31.902842
5   999   9.1985  76.212943
6   332  14.4405  77.664282
7   445  14.6015  36.261851
8   999  14.4405  77.664282
9   332  20.2005  76.725955
10  445  19.8630  40.705467
11  999  20.2005  76.725955
12  332  25.4780  31.597510
13  445  24.9050   4.897008
14  999  25.4780  31.597510
15  332  30.6670  74.096975
16  445  30.0550  35.217889
17  999  30.6670  74.096975

编辑:尝试按照@Ian Kenney 的建议使用排序,但这无济于事,因为现在Dis 值不再按升序排列:

0     332    4.6030    91.204062
15    332   30.6670    74.096975
3     332    9.1985    76.212943
6     332   14.4405    77.664282
9     332   20.2005    76.725955
12    332   25.4780    31.597510
1     445    5.4280    60.233917
4     445    9.7345    31.902842
7     445   14.6015    36.261851
16    445   30.0550    35.217889
10    445   19.8630    40.705467
13    445   24.9050     4.897008

【问题讨论】:

标签: python python-3.x pandas dataframe


【解决方案1】:

使用sort_values,它可以接受排序目标列表。在这种情况下,听起来您想按S/N 排序,然后是Dis,然后是Rate

df = df.sort_values(['S/N', 'Dis', 'Rate'])

#     S/N      Dis       Rate
# 0   332   4.6030  91.204062
# 3   332   9.1985  76.212943
# 6   332  14.4405  77.664282
# 9   332  20.2005  76.725955
# 12  332  25.4780  31.597510
# 15  332  30.6670  74.096975
# 1   445   5.4280  60.233917
# 4   445   9.7345  31.902842
# 7   445  14.6015  36.261851
# 10  445  19.8630  40.705467
# 13  445  24.9050   4.897008
# 16  445  30.0550  35.217889
# ...

【讨论】:

    【解决方案2】:

    您也可以通过多种方式实现这一点,现有答案的另一种方式是,

    df.sort_values(by = ['S/N', "Dis", 'Rate'], inplace = True)
    df
    

    输出:

        S/N Dis     Rate
    0   332 4.6030  91.204062
    3   332 9.1985  76.212943
    6   332 14.4405 77.664282
    9   332 20.2005 76.725955
    12  332 25.4780 31.597510
    15  332 30.6670 74.096975
    1   445 5.4280  60.233917
    4   445 9.7345  31.902842
    7   445 14.6015 36.261851
    10  445 19.8630 40.705467
    13  445 24.9050 4.897008
    16  445 30.0550 35.217889
    2   999 4.6030  91.474156
    5   999 9.1985  76.212943
    8   999 14.4405 77.664282
    11  999 20.2005 76.725955
    14  999 25.4780 31.597510
    17  999 30.6670 74.096975
    

    在这里,sort_values 函数中使用的 Inplace 参数直接在源数据帧中进行更改,这将消除创建另一个数据帧来存储排序输出的需要。

    【讨论】:

    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2023-03-13
    • 2015-12-29
    相关资源
    最近更新 更多