使用pandas的df.rename()无法修改带双引号的DataFrame列名怎么办
pandas修改带双引号列名失败的解决方案
- 问题根因:
df.rename()默认对列名执行完全匹配,如果待修改的列名本身包含双引号,你传入的映射key没有完全匹配包含双引号的完整列名字符串,就会匹配失败,无法完成重命名。
解决方法
方法1:严格匹配列名后重命名
- 先打印所有列名确认完整字符串格式:
print(df.columns.tolist())
你会看到带双引号的列名实际格式类似'"列名"',即双引号是列名字符串的一部分
2. 写rename映射时将双引号包含在key中:
# 单引号包裹带双引号的列名作为key df.rename(columns={'"原始带引号列名"': '修改后的列名'}, inplace=True) # 也可以用双引号转义写法 df.rename(columns={"\"原始带引号列名\"": '修改后的列名'}, inplace=True)
方法2:批量清除所有列名的双引号
如果不需要保留列名中的双引号,可以直接批量处理列名,后续操作更方便:
# 直接替换所有列名中的双引号 df.columns = df.columns.str.replace('"', '', regex=False)
处理完成后所有列名不再包含双引号,之后可以直接用普通的rename操作修改列名。
方法3:用lambda函数动态处理列名
如果只想修改部分带双引号的列名,可以用lambda规则匹配:
df.rename(columns=lambda col: col.replace('"', '').strip() if '"' in col else col, inplace=True)
内容的提问来源于stack exchange,提问作者alarikio
相关产品推荐
相关产品推荐

