Pandas重命名列问题:含双单引号表头无法用pd.rename解决
解决表头含单双引号无法用pd.rename修改的替代方案
直接修改DataFrame的columns属性
直接获取当前列名数组,清洗掉引号后重新赋值给columns,简单直接:# 清洗列名,去除所有单双引号 cleaned_columns = [col.strip('"\'') for col in df.columns] # 直接替换原列名 df.columns = cleaned_columns如果需要精准替换特定列(不是全部清洗),可以手动构建新列名列表对应原列顺序:
df.columns = ['新列名1', '新列名2', '新列名3'] # 列表顺序必须和原列完全对应读取数据阶段提前处理表头
如果数据是从文件读取的,在读取时就处理表头,避免后续麻烦:import pandas as pd # 先读取表头行并清洗(分隔符根据实际文件调整,比如\t、;等) with open('your_data.csv', 'r', encoding='utf-8') as f: raw_header = f.readline().strip().split(',') cleaned_header = [col.strip('"\'') for col in raw_header] # 读取数据时指定处理后的表头 df = pd.read_csv('your_data.csv', header=0, names=cleaned_header)使用set_axis方法批量替换列名
利用pandas的set_axis方法设置列轴标签,支持链式调用:cleaned_columns = [col.replace('"', '').replace("'", "") for col in df.columns] # 非原地修改,返回新的DataFrame df = df.set_axis(cleaned_columns, axis='columns', inplace=False) # 若想直接修改原DataFrame,设置inplace=True # df.set_axis(cleaned_columns, axis='columns', inplace=True)
内容的提问来源于stack exchange,提问作者Jose_Santana
相关产品推荐
相关产品推荐

