pandas使用rename()重命名列无响应 如何将X1/X2索引替换为实际列名
pandas DataFrame列重命名失效与列名批量替换解决方案
一、rename方法无效果的原因
pandas的rename()方法默认不会修改原DataFrame,仅会返回修改后的新对象,你可以通过两种方式实现修改:
- 方式1:将方法返回的结果重新赋值给原变量
df = df.rename({'ID':'QQQ'}, axis='columns') - 方式2:添加
inplace=True参数直接修改原对象df.rename({'ID':'QQQ'}, axis='columns', inplace=True)
二、X1/X2格式列名替换为业务列名的方案
方案1:读入数据时直接指定列名(推荐)
如果你的X开头列名是读入文件时,pandas错误把第一行数据当成表头生成的,可以在读入阶段就指定列名:
import pandas as pd # 按列的顺序填写对应的业务名称,数量要和实际列数完全匹配 df = pd.read_csv('你的文件路径', header=None, names=['ID', 'LIMIT_BAL', 'SEX', 'EDUCATION'])
方案2:直接给columns属性赋值
如果已经把数据读入内存,明确知道所有列对应的业务名称顺序,可直接覆盖列索引:
# 按现有列的从左到右顺序填写业务名 df.columns = ['ID', 'LIMIT_BAL', 'SEX', 'EDUCATION']
方案3:通过映射关系替换指定列名
如果只需要替换部分X开头的列,可自定义映射字典实现:
col_map = { 'X1': 'ID', 'X2': 'LIMIT_BAL', 'X3': 'SEX', 'X4': 'EDUCATION' # 按需补充其他列的映射关系 } df = df.rename(col_map, axis=1)
修改完成后即可通过df.EDUCATION的属性形式访问对应列。
内容的提问来源于stack exchange,提问作者trashparticle
相关产品推荐
相关产品推荐

