Pandas.DataFrame.set_axis() 替换索引 详解 含代码 含测试数据集 随Pandas版本持续更新

发布时间:2024年01月11日

关于Pandas版本: 本文基于 pandas2.1.2 编写。

关于本文内容更新: 随着pandas的stable版本更迭,本文持续更新,不断完善补充。

Pandas稳定版更新及变动内容整合专题: Pandas稳定版更新及变动迭持续更新。

Pandas API参考所有内容目录

Pandas.DataFrame.set_axis()

Pandas.DataFrame.set_axis 用于根据指定的轴替换 DataFrame 的索引(index)、列名。

  • DataFrame.reindex 不同,DataFrame.set_axis 不会因为和原始数据的索引或列名差异,产生数据区域的 缺失值

语法:

DataFrame.set_axis(labels, *, axis=0, copy=None)

返回值:

  • DataFrame

    返回一个替换索引后的 DataFrame 对象。

参数说明:

labels 指定新索引或新的列名

  • labels : list-like, Index

    指定新的索引或列名labels 参数接受以下类型的传入:

    • list-like: 可以是 list-like 对象,比如列表(List)、Numpy 数组、Pandas Series等。
    • Index: 可以是 Index对象。。

axis 指定要替换的轴(替换索引,或替换列名)

  • axis : {0 or ‘index’, 1 or ‘columns’}, default 0

    指定在DataFrame的哪个轴上进行替换:

    • 0 或 ‘index’ : 表示纵向,替换索引;
    • 1 or ‘columns’: 表示横向,替换列名。

copy 是否创建原始数据副本

  • copy : bool, default True

    默认情况下,copy=True 这意味着,替换索引后的 DataFrame 是一个全新的对象,对其进行的数据修改,不会作用于原始数据。

    若指定 copy=False 将使用视图模式,替换索引后的 DataFrame 数据修改,会作用于原始DataFrame

    ? 新增于 Pandas 1.5.0 : copy 参数,新增于Pandas 1.5.0 版本。

相关方法:

?? 相关方法


示例:

测试文件下载:

本文所涉及的测试文件,如有需要,可在文章顶部的绑定资源处下载。

若发现文件无法下载,应该是资源包有内容更新,正在审核,请稍后再试。或站内私信作者索要。

read_excel_na_values
测试文件下载位置.png

示例:DataFrame.set_axis替换索引,不会因为索引差异,在数据区域产生缺失值。

  • 1、构建演示数据并观察数据内容
import pandas as pd

# 构建演示数据
df = pd.DataFrame({'col1':[1,2,3],'col2':[4,5,6]},index=['row1','row2','row3'])
# 观察数据内容
df
col1col2
row114
row225
row336
  • 2、替换索引、列名,不会产生缺失值
# 新索引、列名
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行14
第2行25
第3行36

示例:尝试不同类型的数据传入labels参数,以及 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行14
第2行25
第3行36

示例:如果设置 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
col1col2
row11004
row225
row336
文章来源:https://blog.csdn.net/mingqinsky/article/details/135515285
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。