如何按多列对数据帧行进行排序

Lea*_*eko 2 python dataframe python-3.x pandas

我在以特定样式格式化数据框时遇到问题。我想要将与一个相关的数据S/N全部聚集在一起。我对数据集的最终目标是绘制所有S/Ns 的 Dis 与 Rate 的关系图。我已经厌倦了迭代行来切片数据,但这并没有奏效。这种格式化的最佳(最简单)方法是什么?谢谢!

例如:S/N332 在第一行有Dis4.6 和Rate91.2,紧接着我希望它有S/N332、9.19DisRate76.2,依此类推,对于所有有S/N332 的行。

    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
Run Code Online (Sandbox Code Playgroud)

编辑:尝试按照@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
Run Code Online (Sandbox Code Playgroud)

tdy*_*tdy 5

使用sort_values,它可以接受排序目标列表。在这种情况下,听起来您想按S/N, then Dis, then 排序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
# ...
Run Code Online (Sandbox Code Playgroud)