当我们对一个 Pandas 数据框架进行数据处理、筛选等操作时,经常需要对数据进行排序。这里,我们将介绍如何通过索引和列对 Pandas 数据框架进行排序。
通过行索引进行排序
按照索引升序排列
使用Pandas的sort_index()方法可以按行索引进行排序,并将其存储在一个新数据框架中。
例如,假设我们有以下数据框架:
import pandas as pd
data = {'name': ['Alice', 'Bob', 'Candy', 'David', 'Edgar'],
'age': [21, 25, 18, 27, 20],
'score': [90, 80, 85, 88, 92]}
df = pd.DataFrame(data, index=['c', 'a', 'b', 'e', 'd'])
print(df)
输出结果:
name age score
c Alice 21 90
a Bob 25 80
b Candy 18 85
e David 27 88
d Edgar 20 92
可以看到,我们的数据框架有五个行索引分别为 ‘c’, ‘a’, ‘b’, ‘e’, ‘d’。
现在,我们将按行索引进行升序排列,代码如下:
df_sort_index = df.sort_index()
print(df_sort_index)
输出结果:
name age score
a Bob 25 80
b Candy 18 85
c Alice 21 90
d Edgar 20 92
e David 27 88
结果表明,我们的数据框架已经按行索引升序排列了。
按照索引降序排列
如果需要按行索引降序排列,可以使用传递参数“ascending=False”的sort_index()方法,代码如下:
df_sort_desc_index = df.sort_index(ascending=False)
print(df_sort_desc_index)
输出结果:
name age score
e David 27 88
d Edgar 20 92
c Alice 21 90
b Candy 18 85
a Bob 25 80
通过列进行排序
按单列升序排列
要按列升序或降序排列,可以使用sort_values()方法。以下是按列升序排序的代码示例:
df_sort_values = df.sort_values('age')
print(df_sort_values)
输出结果:
name age score
b Candy 18 85
d Edgar 20 92
c Alice 21 90
a Bob 25 80
e David 27 88
排序时,我们传递age列的名称作为要排序的依据。
按多列升序排列
如果要按多个列进行排序,可以使用sort_values()方法中的by参数。例如,以下代码演示了如何在age和score列上进行排序:
df_sort_values_multicolumn = df.sort_values(by=['age', 'score'])
print(df_sort_values_multicolumn)
输出结果:
name age score
b Candy 18 85
d Edgar 20 92
c Alice 21 90
a Bob 25 80
e David 27 88
结果表明,数据框架首先根据age列排序,然后使用score列进行二次排序。
按单列降序排列
下面我们演示如何在特定列上按降序排序。以下是按score列降序排序的代码示例:
df_sort_dec = df.sort_values('score', ascending=False)
print(df_sort_dec)
输出结果:
name age score
d Edgar 20 92
c Alice 21 90
e David 27 88
b Candy 18 85
a Bob 25 80
结果表明,数据框架根据分数得分进行降序排序。
综上所述,了解了以上几种排序方式,我们就可以根据具体情况进行选择和使用。