【问题标题】:Sorting Dataframe according to two columns根据两列对数据框进行排序
【发布时间】:2023-11-03 06:20:01
【问题描述】:

我得到了以下数据帧:

       R         System    Name
0      0.78       1        Methane - PAH
1      1.00       1        Methane - PAH
2      1.20       1        Methane - PAH
3      1.40       1        Methane - PAH
4      0.90       1        Methane - PAH
5      2.16       1        Methane - PAH
6      1.62       1        Methane - NT
7      1.35       1        Methane - NT
8      1.19       2        Methane - NT
9      1.14       2        Methane - NT
10     0.80       2        Methane - NT
11     1.03       2        Methane - PAH
12     0.89       2        Methane - PAH
13     0.92       2        Methane - PAH
14     1.08       2        Methane - PAH
15     0.86       2        Methane - PAH
16     0.84       2        Methane - PAH
17     0.95       3        Methane - PAH
19     0.97       3        Methane - PAH
20     1.00       3        Methane - NT
21     0.92       3        Methane - NT
22     0.80       3        Methane - PAH
23     0.90       3        Methane - PAH
24     1.00       3        Methane - PAH
25     1.20       3        Methane - NT
26     0.87       3        Methane - NT
27     1.40       3        Methane - PAH
28     0.89       3        Methane - PAH

我想根据 R 但围绕特定系统对 Frame 进行排序:

       R         System   Name
0      0.78       1        Methane - PAH
1      0.90       1        Methane - PAH
2      1.00       1        Methane - PAH
3      1.20       1        Methane - PAH
4      1.35       1        Methane - NT
5      1.40       1        Methane - PAH
6      1.62       1        Methane - NT
7      0.80       2        Methane - NT
8      0.89       2        Methane - PAH
9      0.92       2        Methane - PAH
10     1.03       2        Methane - PAH
11     1.08       2        Methane - PAH
12     1.14       2        Methane - NT
13     1.19       2        Methane - NT
...
18     0.80       3        Methane - PAH
19     0.87       3        Methane - NT
20     0.90       3        Methane - PAH
21     0.92       3        Methane - NT
22     0.95       3        Methane - PAH
23     0.97       3        Methane - PAH
24     1.00       3        Methane - NT
25     1.00       3        Methane - PAH
26     1.20       3        Methane - NT
28     1.40       3        Methane - PAH

我知道如何按列对 DataFrame 进行排序: df = df.sort_values(by = ['R'], 升序=True)

但是我不知道如何进行“部分排序”。 我将不胜感激任何提示。

【问题讨论】:

  • z 怎么突然冒出来的?
  • Pandas 的sort_values() 函数需要一个列表。你应该可以使用df = df.sort_values(by = ['System', 'R'], ascending=True)
  • @SNygard,你可以把你的评论变成答案

标签: python pandas


【解决方案1】:

从 17.0 版本开始,pandas 支持按多列名称排序。 sort_values() 函数的 documentation 表明您可以将列表传递给 by= 关键字。该函数将返回按列表中第一列排序的数据框。然后在第一列的所有匹配值中,数据框将按第二列排序,依此类推。

对数据框进行排序的函数调用是df = df.sort_values(by = ['System', 'R'], ascending=True)

【讨论】: