基于多个键对列进行排序

2024-03-28 16:16:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的数据帧

  release  count
0    2.18    602
1     3.0    617
2     1.9    168
3    2.15    590
4    2.21    622
5    2.19    606
6    2.17    595
7    2.20    617
8     2.3    617

我希望列count在排序时优先于列release

预期答案是

  release  count
2     1.90    168
3     2.15    590
6     2.17    595
0     2.18    602
5     2.19    606
7     2.20    617
4     2.21    622
8     2.30    617
1     3.00    617

Tags: 数据答案release排序count
3条回答

推荐的方法是使用函数sort_values

因此:

df.sort_values(by=['release'])

我认为有字符串,需要像浮点数一样排序

使用^{}将列转换为浮点数,用于排序值的位置,因此添加了^{}用于更改顺序:

df = df.iloc[df['release'].astype(float).argsort()]
print (df)
   release  count
2     1.90    168
3     2.15    590
6     2.17    595
0     2.18    602
5     2.19    606
7     2.20    617
4     2.21    622
8     2.30    617
1     3.00    617

我们可以使用sort_值根据多个键对数据帧进行排序

df.sort_values(by=['count','release'], inplace = True)

第一个键count将给出第一级排序,而release将给出第二级排序

您不必创建单独的函数来进行python排序

相关问题 更多 >