Pandas MultiIndex 标签怎么重命名?

文章导读
Previous Quiz Next 重命名 Pandas 数据结构的 MultiIndex 标签是一项常见任务,尤其是在处理层次化数据集时。这涉及到重命名 MultiIndex 对象的特定标签、轴名称或索引级别。Pandas 提供了几种方法来高效地重命名 MultiI
📋 目录
  1. 使用 rename() 重命名 MultiIndex 标签
  2. 重命名 MultiIndex 轴名称
  3. 使用 set_names() 重命名 MultiIndex 级别
A A

Python Pandas - 重命名 MultiIndex 标签



Previous
Quiz
Next

重命名 Pandas 数据结构的 MultiIndex 标签是一项常见任务,尤其是在处理层次化数据集时。这涉及到重命名 MultiIndex 对象的特定标签、轴名称或索引级别。Pandas 提供了几种方法来高效地重命名 MultiIndex 对象中的索引标签、列标签或索引级别 −

  • rename():重命名特定的索引或列标签。

  • rename_axis():重命名索引或列的轴名称。

  • set_names():直接设置或更改 MultiIndex 级别的名称。

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

使用 rename() 重命名 MultiIndex 标签

要在 MultiIndex 对象中重命名索引或列的标签,您可以使用 pandas 的 DataFrame.rename() 方法。此方法通过 indexcolumn 参数,有效地重命名 pandas 对象中索引或列的单个标签。

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

以下是使用 df.rename() 方法重命名 MultiIndex DataFrame 的特定索引标签的基本示例。

import pandas as pd

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

# 显示输入 DataFrame
print('原始 MultiIndex DataFrame:\n',df)

# 重命名特定的索引标签
df_renamed = df.rename(index={"A": "aaa", "one": "1"})
print("重命名后的 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() 方法重命名 MultiIndex DataFrame 的特定列标签的另一个示例。

import pandas as pd

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

# 显示输入 DataFrame
print('原始 MultiIndex DataFrame:\n',df)

# 重命名列
df_renamed = df.rename(columns={'X': "col0", 'Y': "col1"})
print("重命名后的 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

重命名 MultiIndex 轴名称

pandas 的 DataFrame.rename_axis() 方法用于重命名或设置 MultiIndex 中的索引级别名称。这在处理多级索引时特别有用。

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

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

import pandas as pd

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

# 显示输入 DataFrame
print('原始 MultiIndexed DataFrame:\n',df)

# 为索引级别设置名称
result = df.rename_axis(index=["level1", "level2"])
print("结果 DataFrame:")
print(result)

以上代码的输出如下 −

原始 MultiIndexed DataFrame:
X Y
Aone12
two34
three11
Bone56
two78
three22
重命名后的 DataFrame:
X Y
level1level2
Aone12
two34
three11
Bone56
two78
three22

使用 set_names() 重命名 MultiIndex 级别

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

示例:重命名 MultiIndex 级别的名称

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

import pandas as pd

# 创建 MultiIndex 对象
index = pd.MultiIndex.from_tuples([('A', 'one'), ('A', 'two'), ('A', 'three'),('B', 'one'), ('B', 'two'), ('B', 'three')],
names=["level0", "level1"])

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

# 显示输入 DataFrame
print('原始 MultiIndexed DataFrame:\n',df)

# 重命名特定级别
df.index= df.index.set_names("new_name", level=0)
print("结果 DataFrame:")
print(df)

以上代码的输出如下 −

原始 MultiIndexed DataFrame:
X Y
level1level2
Aone12
two34
three11
Bone56
two78
three22
结果 DataFrame:
X Y
new_namelevel2
Aone12
two34
three11
Bone56
two78
three22