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 的行索引标签或列名的方法 |
pandas.DataFrame.rename()
pandas.DataFrame.rename()
是一个用于重命名 DataFrame 的行索引标签或列名的方法。它允许通过映射函数、字典或函数来修改索引或列的名称,常用于数据清洗和预处理。
📌 方法签名
DataFrame.rename(mapper=None, *, index=None, columns=None, axis=None, copy=None, inplace=False, level=None, errors='ignore')
🔧 参数说明
参数 | 类型 | 说明 |
---|
mapper | dict 或 callable | 用于映射旧标签到新标签的字典或函数(默认作用于 axis=1 即列) |
index | dict 或 callable | 仅用于重命名行索引 |
columns | dict 或 callable | 仅用于重命名列名 |
axis | {0/'index', 1/'columns'} ,默认为 1 | 指定作用轴 |
copy | bool ,默认 True | 是否复制底层数据 |
inplace | bool ,默认 False | 是否在原对象上修改 |
level | int 或 str,可选 | 多级索引时指定层级 |
errors | {'ignore', 'raise'} ,默认 'ignore' | 如果键不存在是否报错 |
✅ 返回值
- 返回一个新的
DataFrame
,其索引或列名已被重命名; - 若
inplace=True
,则返回 None
。
🧪 示例代码及结果
示例 1:使用字典重命名列名
import pandas as pddf = pd.DataFrame({'A': [1, 2, 3],'B': [4, 5, 6]
}, index=['x', 'y', 'z'])
df_renamed = df.rename(columns={'A': 'NewA', 'B': 'NewB'})print("Original DataFrame:")
print(df)
print("\nRenamed Columns:")
print(df_renamed)
输出结果:
Original DataFrame:A B
x 1 4
y 2 5
z 3 6Renamed Columns:NewA NewB
x 1 4
y 2 5
z 3 6
示例 2:使用函数批量重命名列名(如添加前缀)
df_prefix = df.rename(columns=lambda col: 'Col_' + col)print("\nColumns with prefix:")
print(df_prefix)
输出结果:
Columns with prefix:Col_A Col_B
x 1 4
y 2 5
z 3 6
示例 3:重命名行索引标签
df_index_renamed = df.rename(index={'x': 'row1', 'y': 'row2'})print("\nIndex renamed:")
print(df_index_renamed)
输出结果:
Index renamed:A B
row1 1 4
row2 2 5
z 3 6
示例 4:同时重命名行和列(使用 index
和 columns
)
df_both = df.rename(index={'x': 'rowX', 'y': 'rowY'},columns={'A': 'ColA', 'B': 'ColB'}
)print("\nBoth index and columns renamed:")
print(df_both)
输出结果:
Both index and columns renamed:ColA ColB
rowX 1 4
rowY 2 5
z 3 6
示例 5:使用 inplace=True
原地修改
df.rename(columns={'A': 'AAA'}, inplace=True)
print("\nInplace rename (modified original):")
print(df)
输出结果:
Inplace rename (modified original):AAA B
x 1 4
y 2 5
z 3 6
示例 6:忽略不存在的键(errors=‘ignore’)
df_ignore = df.rename(columns={'C': 'NewC'}, errors='ignore')
print("\nIgnore non-existent column 'C':")
print(df_ignore)
输出结果:
Ignore non-existent column 'C':AAA B
x 1 4
y 2 5
z 3 6
示例 7:多级索引重命名(level 参数)
df_multi = pd.DataFrame({'value': [10, 20, 30]
}, index=pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1)], names=['group', 'id']))
df_level_renamed = df_multi.rename(index={'a': 'groupA', 'b': 'groupB'}, level=0)print("\nMultiIndex rename (level=0):")
print(df_level_renamed)
输出结果:
MultiIndex rename (level=0):value
group id
groupA 1 102 20
groupB 1 30
🧠 应用场景
- 数据清洗中统一列名格式(如大小写、空格、前缀等);
- 多源数据合并前标准化字段名;
- 多级索引结构优化;
- 提高可读性(如将英文列名翻译成中文);
- 模型预测后与原始数据结构对齐。
⚠️ 注意事项
- 默认不会修改原始
DataFrame
,除非设置 inplace=True
; - 可以使用字典或函数进行灵活重命名;
- 支持多级索引,通过
level
控制层级; - 使用
errors='ignore'
可避免因不存在的键报错; rename()
不会改变数据内容,只改变标签名称。