📜  如何在多个索引熊猫中排序 - Python (1)

📅  最后修改于: 2023-12-03 15:38:39.437000             🧑  作者: Mango

如何在多个索引的Pandas中排序 - Python

在Pandas中,我们可以使用sort_values()函数对DataFrame和Series进行排序。当我们在处理多个索引的DataFrame时,可以使用多个参数指定需要排序的索引。本文将介绍如何在多个索引的Pandas中排序。

1. 创建多层次索引DataFrame

为了演示如何在多个索引的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
2. 按第一级别索引排序

要按第一层级别索引排序,我们可以在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
3. 按第二级别索引排序

要按第二层级别索引排序,我们可以在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
4. 按多级别索引排序

要按多层级别索引排序,我们可以在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
5. 总结

本文介绍了如何在多个索引的Pandas中排序。我们可以使用sort_values()函数按顺序指定需要排序的索引来实现排序。通过本文的介绍,希望你已经理解如何在多个索引的Pandas中排序。