【Pandas】pandas DataFrame rename_axis
Pandas2.2 DataFrame
Reindexing selection label manipulation
方法 | 描述 |
---|---|
DataFrame.add_prefix(prefix[, axis]) | 用于在 DataFrame 的行标签或列标签前添加指定前缀的方法 |
DataFrame.add_suffix(suffix[, axis]) | 用于在 DataFrame 的行标签或列标签后添加指定后缀的方法 |
DataFrame.align(other[, join, axis, level, …]) | 用于对齐两个 DataFrame 或 Series 的方法 |
DataFrame.at_time(time[, asof, axis]) | 用于筛选 特定时间点 的行的方法 |
DataFrame.between_time(start_time, end_time) | 用于筛选 指定时间范围内的数据行 的方法 |
DataFrame.drop([labels, axis, index, …]) | 用于从 DataFrame 中删除指定行或列的方法 |
DataFrame.drop_duplicates([subset, keep, …]) | 用于删除重复行的方法 |
DataFrame.duplicated([subset, keep]) | 用于检测 重复行 的方法 |
DataFrame.equals(other) | 用于比较两个 DataFrame 是否完全相等的方法 |
DataFrame.filter([items, like, regex, axis]) | 用于筛选列或行标签的方法 |
DataFrame.first(offset) | 用于选取 时间序列型 DataFrame 中从起始时间开始的一段连续时间窗口 的方法 |
DataFrame.head([n]) | 用于快速查看 DataFrame 前几行数据 的方法 |
DataFrame.idxmax([axis, skipna, numeric_only]) | 用于查找 每列或每行中最大值的索引标签 的方法 |
DataFrame.idxmin([axis, skipna, numeric_only]) | 用于查找 每列或每行中最小值的索引标签 的方法 |
DataFrame.last(offset) | 用于选取 时间序列型 DataFrame 中从最后时间点开始向前截取一段指定长度的时间窗口 的方法 |
DataFrame.reindex([labels, index, columns, …]) | 用于重新索引 DataFrame 的核心方法 |
DataFrame.reindex_like(other[, method, …]) | 用于将当前 DataFrame 的索引和列重新设置为与另一个对象(如另一个 DataFrame 或 Series)相同 |
DataFrame.rename([mapper, index, columns, …]) | 用于重命名 DataFrame 的行索引标签或列名的方法 |
DataFrame.rename_axis([mapper, index, …]) | 用于**重命名 DataFrame 的索引轴名称(index axis name)或列轴名称(column axis name)**的方法 |
pandas.DataFrame.rename_axis()
pandas.DataFrame.rename_axis()
是一个用于**重命名 DataFrame 的索引轴名称(index axis name)或列轴名称(column axis name)**的方法。它不修改行标签或列名本身,而是修改整个轴的“名称”属性,常用于数据整理和可视化时标注维度信息。
📌 方法签名
DataFrame.rename_axis(mapper=<no_default>, *, index=<no_default>, columns=<no_default>, axis=0, copy=None, inplace=False)
🔧 参数说明
参数 | 类型 | 说明 |
---|---|---|
mapper | str、list-like 或 dict,可选 | 新的轴名称;若未指定,则删除轴名称 |
index | str、list-like 或 dict,可选 | 单独设置行索引的名称(axis=0) |
columns | str、list-like 或 dict,可选 | 单独设置列索引的名称(axis=1) |
axis | {0/'index', 1/'columns'} ,默认为 0 | 指定作用于行轴还是列轴 |
copy | bool ,默认 True | 是否复制底层数据 |
inplace | bool ,默认 False | 是否在原对象上修改 |
⚠️
rename_axis()
主要用于设置Index
或MultiIndex
的.name
属性。
✅ 返回值
- 如果
inplace=False
(默认),返回一个新的DataFrame
; - 如果
inplace=True
,则返回None
,原始DataFrame
被修改。
🧪 示例代码及结果
示例 1:基本用法 - 设置行索引轴名称(axis=0)
import pandas as pddf = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
}, index=['x', 'y', 'z'])# 设置行索引轴名称为 'rows'
df_renamed_axis = df.rename_axis('rows')print("Renamed row axis:")
print(df_renamed_axis)
print("\nAxis name:", df_renamed_axis.index.name)
输出结果:
Renamed row axis:A B
x 1 4
y 2 5
z 3 6Axis name: rows
示例 2:设置列索引轴名称(axis=1)
# 设置列索引轴名称为 'cols'
df_renamed_cols_axis = df.rename_axis('cols', axis=1)print("Renamed column axis:")
print(df_renamed_cols_axis)
print("\nColumn axis name:", df_renamed_cols_axis.columns.name)
输出结果:
Renamed column axis:A B
x 1 4
y 2 5
z 3 6Column axis name: cols
示例 3:使用 index
和 columns
同时设置多个轴名称
df_multi_axis = df.rename_axis(index='rows', columns='cols')print("Both axes renamed:")
print(df_multi_axis)
print("Row axis name:", df_multi_axis.index.name)
print("Column axis name:", df_multi_axis.columns.name)
输出结果:
Both axes renamed:A B
x 1 4
y 2 5
z 3 6Row axis name: rows
Column axis name: cols
示例 4:删除轴名称(传入 None)
# 删除行索引轴名称
df_no_axis_name = df.rename_axis(None)print("No row axis name:")
print(df_no_axis_name)
print("Axis name:", df_no_axis_name.index.name)
输出结果:
No row axis name:A B
x 1 4
y 2 5
z 3 6Axis name: None
示例 5:多级索引重命名轴名称(适用于 MultiIndex)
# 创建多级索引 DataFrame
df_multi_index = pd.DataFrame({'value': [10, 20, 30]
}, index=pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1)], names=['group', 'id']))# 重命名行索引轴名称
df_renamed_multi = df_multi_index.rename_axis(['category', 'identifier'])print("MultiIndex renamed axis:")
print(df_renamed_multi)
print("Index names:", df_renamed_multi.index.names)
输出结果:
MultiIndex renamed axis:value
category identifier
a 1 102 20
b 1 30Index names: ['category', 'identifier']
示例 6:原地修改(inplace=True)
df.rename_axis('new_rows', inplace=True)
print("Inplace rename axis:")
print(df)
print("New index name:", df.index.name)
输出结果:
Inplace rename axis:A B
x 1 4
y 2 5
z 3 6New index name: new_rows
🧠 应用场景
- 数据可视化时标注坐标轴名称;
- 多级索引结构中清晰标识层级含义;
- 数据导出到文件(如 Excel)时保留轴名称;
- 提高 DataFrame 的可读性和语义清晰度;
- 在数据分析报告中展示更明确的维度信息。
⚠️ 注意事项
rename_axis()
不改变行/列标签本身,只改变轴的“名称”属性;- 可以通过
index
和columns
分别设置不同轴的名称; - 支持多级索引,可用于重命名每一层的名称;
- 若传入
None
,则会删除当前轴名称; - 默认不会修改原始
DataFrame
,除非设置inplace=True
。