Python Pandas - 重命名多级索引标签



重命名 Pandas 数据结构的多级索引标签或名称是一项常见任务,尤其是在处理分层数据集时。它涉及重命名多级索引对象的特定标签、轴名称或索引级别。Pandas 提供了灵活的方法,例如 rename()rename_axis()set_names(),可以高效地处理这些任务。无论您是想重命名特定标签,更改索引或列轴的名称,还是更新索引级别的整个层次结构,这些方法都非常有用。

在本教程中,您将学习在 Pandas 中重命名多级索引数据结构的标签和名称的各种方法。

使用 rename() 重命名多级索引标签

要重命名多级索引对象中索引或列的标签,可以使用 pandas 的 DataFame.rename() 方法。此方法使用 indexcolumns 参数,可用于重命名 pandas 对象中索引或列中的单个标签。

示例:重命名特定的索引标签

这是一个使用 df.rename() 方法重命名多级索引 DataFrame 的特定索引标签的基本示例。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')])
# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Renaming specific index labels
df_renamed = df.rename(index={"A": "aaa", "one": "1"})
print("Renamed DataFrame:")
print(df_renamed)

以下是上述代码的输出:

Original MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
Renamed DataFrame:
X Y
aaa112
two34
three11
B156
two78
three22

示例:重命名特定的列标签

以下是另一个使用 df.rename() 方法重命名多级索引 DataFrame 的特定列标签的示例。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')])
# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Renaming columns
df_renamed = df.rename(columns={'X': "col0", 'Y': "col1"})
print("Renamed DataFrame:")
print(df_renamed)

以下是上述代码的输出:

Original MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
Renamed DataFrame:
col0 col1
Aone12
two34
three11
Bone56
two78
three22

重命名多级索引轴名称

pandas 的 DataFrame.rename_axis() 方法用于重命名或设置多级索引中索引级别的名称。在使用多级索引时,这尤其有用。

示例:指定/重命名索引级别的名称

此示例演示了使用 df.rename_axis() 方法重命名多级索引 DataFrame 中索引级别名称的方法。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')])
# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Set names for the index levels
result = df.rename_axis(index=["level1", "level2"])
print("Resultant DataFrame:")
print(result)

以下是上述代码的输出:

Original MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
Renamed DataFrame:
X Y
level1level2
Aone12
two34
three11
Bone56
two78
three22

使用 set_names() 重命名多级索引级别

pandas 的 Index.set_names() 方法用于直接重命名多级索引的级别。此方法允许您设置或更改索引中各个级别的名称。

示例:重命名多级索引级别的名称

此示例演示了如何使用 Index.set_names() 方法更改多级索引级别的名称。

import pandas as pd

# Create a MultiIndex object
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')],
names=["level0", "level1"])

# Create a DataFrame
data = [[1, 2], [3, 4], [1, 1], [5, 6], [7, 8], [2, 2]]
df = pd.DataFrame(data, index=index, columns=['X', 'Y'])

# Display the input DataFrame
print('Original MultiIndexed DataFrame:\n',df)

# Renaming a specific level
df.index= df.index.set_names("new_name", level=0)
print("Resultant DataFrame:")
print(df)

以下是上述代码的输出:

Original MultiIndexed DataFrame:
X Y
level1level2
Aone12
two34
three11
Bone56
two78
three22
Resultant DataFrame:
X Y
new_namelevel2
Aone12
two34
three11
Bone56
two78
three22
广告
© . All rights reserved.