📅  最后修改于: 2023-12-03 15:38:39.437000             🧑  作者: Mango
在Pandas中,我们可以使用sort_values()函数对DataFrame和Series进行排序。当我们在处理多个索引的DataFrame时,可以使用多个参数指定需要排序的索引。本文将介绍如何在多个索引的Pandas中排序。
为了演示如何在多个索引的Pandas中排序,我们需要先创建一个多层次索引的DataFrame。
我们可以使用以下代码创建一个具有多层次索引的DataFrame:
import pandas as pd
data = {
('A', 'a'): [1, 2, 3],
('A', 'b'): [4, 5, 6],
('B', 'a'): [7, 8, 9],
('B', 'b'): [10, 11, 12]
}
df = pd.DataFrame(data, index=['x', 'y', 'z'])
这将创建一个具有两个级别的索引的DataFrame,第一个级别为['A', 'B']
,第二个级别为['a', 'b']
。我们可以通过以下代码查看DataFrame:
print(df)
输出结果如下:
A B
a b a b
x 1 4 7 10
y 2 5 8 11
z 3 6 9 12
要按第一层级别索引排序,我们可以在sort_values()
函数中将by
参数设置为第一级别索引。以下代码将按第一级别索引以升序排序:
df_sorted = df.sort_values(by=('A',))
我们可以通过以下代码查看排序后的DataFrame:
print(df_sorted)
输出结果如下:
A B
a b a b
x 1 4 7 10
y 2 5 8 11
z 3 6 9 12
如果我们想要按第一级别索引以降序排序,我们可以在sort_values()
函数中设置ascending
参数为False
,如下所示:
df_sorted = df.sort_values(by=('A',), ascending=False)
我们可以通过以下代码查看排序后的DataFrame:
print(df_sorted)
输出结果如下:
A B
a b a b
z 3 6 9 12
y 2 5 8 11
x 1 4 7 10
要按第二层级别索引排序,我们可以在sort_values()
函数中将by
参数设置为第二级别索引。以下代码将按第二级别索引以升序排序:
df_sorted = df.sort_values(by=('a',))
我们可以通过以下代码查看排序后的DataFrame:
print(df_sorted)
输出结果如下:
A B
a b a b
x 1 4 7 10
y 2 5 8 11
z 3 6 9 12
如果我们想要按第二级别索引以降序排序,我们可以在sort_values()
函数中设置ascending
参数为False
,如下所示:
df_sorted = df.sort_values(by=('a',), ascending=False)
我们可以通过以下代码查看排序后的DataFrame:
print(df_sorted)
输出结果如下:
A B
a b a b
z 3 6 9 12
y 2 5 8 11
x 1 4 7 10
要按多层级别索引排序,我们可以在sort_values()
函数中按顺序指定需要排序的索引。以下代码将先按第一级别索引,再按第二级别索引以升序排序:
df_sorted = df.sort_values(by=[('A', 'a'), ('B', 'a')])
我们可以通过以下代码查看排序后的DataFrame:
print(df_sorted)
输出结果如下:
A B
a b a b
x 1 4 7 10
y 2 5 8 11
z 3 6 9 12
如果我们想要按多层级别索引以降序排序,我们可以在sort_values()
函数中按顺序指定需要排序的索引,并在最后一个参数ascending
中设置为False
。以下代码将先按第一级别索引,再按第二级别索引以降序排序:
df_sorted = df.sort_values(by=[('A', 'a'), ('B', 'a')], ascending=[False, False])
我们可以通过以下代码查看排序后的DataFrame:
print(df_sorted)
输出结果如下:
A B
a b a b
z 3 6 9 12
y 2 5 8 11
x 1 4 7 10
本文介绍了如何在多个索引的Pandas中排序。我们可以使用sort_values()
函数按顺序指定需要排序的索引来实现排序。通过本文的介绍,希望你已经理解如何在多个索引的Pandas中排序。