看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
DataFrame.rename 是 pandas 中用于重命名 DataFrame 的列或索引标签的方法。它可以使用字典或函数来映射新旧标签,并且支持就地修改原 DataFrame 或返回新的 DataFrame。
语法如下:
DataFrame.rename(mapper=None,
*,
index=None,
columns=None,
axis=None,
copy=None,
inplace=False,
level=None,
errors='ignore'
)
重命名列或索引标签。
函数或字典的值必须唯一(1 对 1)。字典/系列中未包含的标签将保持原样。列出的额外标签不会引发错误。
简单说明:
dict
或 function
): 应用于该轴值的变换。使用 mapper
和 axis
指定目标轴,或 index
和 columns
。dict
或 function
): 等效于 mapper, axis=0
。dict
或 function
): 等效于 mapper, axis=1
。{0 或 ‘index’, 1 或 ‘columns’}
,默认 0
): 目标轴。bool
,默认 True
): 是否复制底层数据。bool
,默认 False
): 是否修改原 DataFrame 而非创建新 DataFrame。int
或 level name
,默认 None
): 针对 MultiIndex 进行指定级别的重命名。{'ignore', 'raise'}
,默认 'ignore'
): 如果字典或函数包含的标签不存在于目标轴中,是否引发错误。详细介绍:
参数:
mapper
:类似字典或函数mapper
和 axis
来指定要使用 mapper
目标的轴,或使用 index
和 columns
。index
:类似字典或函数mapper
,axis=0
等同于 index=mapper
)。columns
:类似字典或函数mapper
,axis=1
等同于 columns=mapper
)。axis
:{0 或 'index',1 或 'columns'},默认 0mapper
目标的轴。可以是轴名称('index','columns')或数字(0,1)。默认是 'index'。copy
:布尔值,默认 Truecopy
关键字的行为将发生变化。默认将启用写时复制(Copy-on-Write),这意味着所有带有 copy
关键字的方法将使用延迟复制机制来推迟复制,并忽略 copy
关键字。在未来的 pandas 版本中,copy
关键字将被删除。pd.options.mode.copy_on_write = True
。inplace
:布尔值,默认 Falsecopy
的值。level
:整数或级别名称,默认 Noneerrors
:{'ignore','raise'},默认 'ignore'mapper
、index
或 columns
包含在要转换的 Index 中不存在的标签时,引发 KeyError
。如果为 'ignore',现有键将被重命名,额外的键将被忽略。返回值:
DataFrame
或 None
inplace=True
则为 None
。None
: 重命名轴标签的 DataFrame,若 inplace=True
则返回 None
。DataFrame.rename 支持两种调用约定:
(index=index_mapper, columns=columns_mapper,...)
(mapper, axis={'index', 'columns'},...)
我们强烈建议使用关键字参数来明确您的意图。
重命名列:
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df.rename(columns={"A": "a", "B": "c"})
a c
0 1 4
1 2 5
2 3 6
使用映射重命名索引:
df.rename(index={0: "x", 1: "y", 2: "z"})
A B
x 1 4
y 2 5
z 3 6
将索引标签强制转换为其他类型:
df.index
# RangeIndex(start=0, stop=3, step=1)
df.rename(index=str).index
# Index(['0', '1', '2'], dtype='object')
df.rename(columns={"A": "a", "B": "b", "C": "c"}, errors="raise")
'''
Traceback (most recent call last):
KeyError: ['C'] not found in axis
'''
使用轴样式参数:
df.rename(str.lower, axis='columns')
a b
0 1 4
1 2 5
2 3 6
df.rename({1: 2, 2: 4}, axis='index')
A B
0 1 4
2 2 5
4 3 6
可以修改索引对象的索引名:
Index.rename(name, *, inplace=False)
示例:
>>> idx = pd.Index(['A', 'C', 'A', 'B'], name='score')
>>> idx.rename('grade')
Index(['A', 'C', 'A', 'B'], dtype='object', name='grade')
>>> idx = pd.MultiIndex.from_product([['python', 'cobra'],
... [2018, 2019]],
... names=['kind', 'year'])
>>> idx
MultiIndex([('python', 2018),
('python', 2019),
( 'cobra', 2018),
( 'cobra', 2019)],
names=['kind', 'year'])
>>> idx.rename(['species', 'year'])
MultiIndex([('python', 2018),
('python', 2019),
( 'cobra', 2018),
( 'cobra', 2019)],
names=['species', 'year'])
>>> idx.rename('species')
'''
Traceback (most recent call last):
TypeError: Must pass list-like as `names`.
'''
Series 也支持此方法,它和 DataFrame 一样,兼容了相应的参数,示例如下:
>>> s = pd.Series([1, 2, 3])
>>> s
0 1
1 2
2 3
dtype: int64
>>> s.rename("my_name") # scalar, changes Series.name
0 1
1 2
2 3
Name: my_name, dtype: int64
>>> s.rename(lambda x: x ** 2) # function, changes labels
0 1
1 2
4 3
dtype: int64
>>> s.rename({1: 3, 2: 5}) # mapping, changes labels
0 1
3 2
5 3
dtype: int64
更新时间:2024-07-10 14:28:02 标签:pandas python rename 索引 重命名