Pandas 如何根据某一列对数据框进行排序

Pandas 如何根据某一列对数据框进行排序

在本文中,我们将介绍如何使用Pandas对数据框按照某一列进行排序。

阅读更多:Pandas 教程

Pandas排序方法

在Pandas中,我们可以使用sort_values()方法对数据框进行排序。该方法有许多可选参数,如ascending(默认为True,表示升序)、na_position(缺失值的排列位置)、ignore_index(忽略原来的索引)等。下面我们着重介绍其中最为重要的一个参数:

by

by参数用于指定按照哪一列进行排序。可以是单列,也可以是多列。当有多列时,按照指定列的顺序进行排序。

我们可以通过如下代码来演示按照单列进行排序:

import pandas as pd

df = pd.read_csv("data.csv")
df.sort_values(by='col_name', ascending=False)
Python

其中col_name是我们要排序的列名,ascending=False表示降序排列(默认为升序)。

如果我们要按照多列进行排序,只需要在by参数中传入一个列名的列表即可。下面是一个示例:

df.sort_values(by=['col_name1', 'col_name2'], ascending=False)
Python

这样就会按照col_name1进行排序,如果有相同的值,再按照col_name2进行排序。

inplace

除了返回排序后的数据框外,也可以通过inplace=True使排序直接作用于原始数据框:

df.sort_values('col_name', ascending=False, inplace=True)
Python

注意,使用inplace=True会改变原有的数据框,因此应谨慎使用。

示例

下面我们通过一个实际的数据集展示如何根据某一列对数据框进行排序。

我们使用一个名为df的数据框,其中包含了五个城市的人均GDP、人口、面积和人口密度:

import pandas as pd

data = {'City': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Hangzhou'],
        'GDP_Per_Capita': [21000, 20500, 19000, 18000, 16000],
        'Population': [2154, 2424, 1186, 1289, 966],
        'Area': [16410, 6340, 7434, 1996, 16596]}
df = pd.DataFrame(data)
df['Population_Density'] = df['Population'] / df['Area']
Python

现在我们将数据框按照人均GDP进行升序排序:

df.sort_values(by='GDP_Per_Capita', inplace=True)
Python

运行结果如下:

        City  GDP_Per_Capita  Population   Area  Population_Density
4   Hangzhou           16000         966  16596            0.058185
3   Shenzhen           18000        1289   1996            0.645692
2  Guangzhou           19000        1186   7434            0.159422
1   Shanghai           20500        2424   6340            0.382110
0    Beijing           21000        2154  16410            0.131304
Python

我们还可以将数据框按照人均GDP和人口密度的综合排序:

df.sort_values(by=['GDP_Per_Capita', 'Population_Density'], ascending=[False, True], inplace=True)
Python

这里使用了多列排序,先按照人均GDP降序排列,如果有相同的则按照人口密度升序排列。

运行结果如下:

        City  GDP_Per_Capita  Population   Area  Population_Density
0    Beijing           21000        2154  16410            0.131304
1   Shanghai           20500        2424   6340            0.38211
2  Guangzhou           19000        1186   7434            0.159422
3   Shenzhen           18000        1289   1996            0.645692
4   Hangzhou           16000         966  16596            0.058185
Python

总结

在本文中,我们介绍了使用Pandas对数据框按照某一列或多列进行排序的方法。其中,by参数用于指定排序的列名,ascending参数用于指定排序的升降序。我们还通过实际的数据集演示了如何进行排序,并给出了多列排序的示例。希望本文对大家有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册