关于Pandas版本: 本文基于 pandas2.1.2 编写。
关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。
Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。
Pandas.DataFrame.set_axis
用于根据指定的轴替换 DataFrame
的索引(index)、列名。
DataFrame.set_axis
不会因为和原始数据的索引或列名差异,产生数据区域的 缺失值
。例DataFrame.set_axis(labels, *, axis=0, copy=None)
DataFrame
返回一个替换索引后的 DataFrame
对象。
labels : list-like, Index 例
指定新的索引或列名labels
参数接受以下类型的传入:
list-like
对象,比如列表(List)、Numpy 数组、Pandas Series等。Index对象
。。axis : {0 or ‘index’, 1 or ‘columns’}, default 0 例
指定在DataFrame
的哪个轴上进行替换:
copy : bool, default True
默认情况下,copy=True
这意味着,替换索引后的 DataFrame
是一个全新的对象,对其进行的数据修改,不会作用于原始数据。
若指定 copy=False
将使用视图模式,替换索引后的 DataFrame
数据修改,会作用于原始DataFrame
。例
? 新增于 Pandas 1.5.0 :
copy
参数,新增于Pandas 1.5.0 版本。
?? 相关方法
Alter the name of the index or columns.
测试文件下载:
本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。
若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。
read_excel_na_values
import pandas as pd
# 构建演示数据
df = pd.DataFrame({'col1':[1,2,3],'col2':[4,5,6]},index=['row1','row2','row3'])
# 观察数据内容
df
col1 | col2 | |
---|---|---|
row1 | 1 | 4 |
row2 | 2 | 5 |
row3 | 3 | 6 |
# 新索引、列名
new_index = ['第1行','第2行','第3行']
new_labels = ['第1列','第2列']
# 替换索引
df = df.set_axis(new_index,axis=0)
# 替换列名
df = df.set_axis(new_labels,axis=1)
# 观察替换后
df
第1列 | 第2列 | |
---|---|---|
第1行 | 1 | 4 |
第2行 | 2 | 5 |
第3行 | 3 | 6 |
axis
参数的使用import pandas as pd
# 构建演示数据
df = pd.DataFrame({'col1':[1,2,3],'col2':[4,5,6]},index=['row1','row2','row3'])
# 新索引、列名
new_index = ['第1行','第2行','第3行']
new_labels = pd.Index(['第1列','第2列'])
# 替换索引
df = df.set_axis(new_index,axis=0)
# 替换列名
df = df.set_axis(new_labels,axis=1)
# 观察替换后
df
第1列 | 第2列 | |
---|---|---|
第1行 | 1 | 4 |
第2行 | 2 | 5 |
第3行 | 3 | 6 |
copy=False
替换索引后的DataFrame数据修改会反应在原始数据上。import pandas as pd
# 构建演示数据
df = pd.DataFrame({'col1':[1,2,3],'col2':[4,5,6]},index=['row1','row2','row3'])
# 新索引、列名
new_index = ['第1行','第2行','第3行']
# 替换索引
df_new = df.set_axis(new_index,axis=0,copy=False)
# 修改df_new
df_new.iloc[0,0] = 100
# 观察原始数据
df
col1 | col2 | |
---|---|---|
row1 | 100 | 4 |
row2 | 2 | 5 |
row3 | 3 | 6 |