You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas列重命名异常求助:无法设置列名用于后续函数调用

解决Pandas重命名DataFrame列失效问题

可能的原因及对应解决方案

1. 读取CSV时未正确处理表头

如果你的CSV文件本身没有表头(第一行就是数据),但read_csv默认会把第一行当作表头,直接赋值data.columns会导致原数据行被错误覆盖为列名,视觉上看起来重命名没生效。

解决方法:读取时指定header=None,同时设置列名:

import pandas as pd

file_path_asset = 'C://Users//AZLBAIBI//Desktop//Ex2 TP//Asset.csv'
# header=None表示文件无表头,names参数直接设置新列名
data = pd.read_csv(file_path_asset, delimiter=',', header=None,
                   names=["asset_id", "asset_reference", "asset_type", "product_warranty_start_date", "product_warranty_end_date"])
print(data)

如果你的CSV自带表头但需要替换,则要加上header=0跳过原表头行:

data = pd.read_csv(file_path_asset, delimiter=',', header=0,
                   names=["asset_id", "asset_reference", "asset_type", "product_warranty_start_date", "product_warranty_end_date"])

2. 直接赋值columns的局限性

直接赋值data.columns要求新列名的数量必须和原DataFrame列数完全一致,否则操作会失败。另外如果原列名包含隐藏空格、特殊字符,也会导致视觉上看起来重命名没生效。

更可靠的方式是用rename方法,明确映射原列名和新列名:

# 替换成你CSV实际的原列名
data.rename(columns={
    "原列名1": "asset_id",
    "原列名2": "asset_reference",
    "原列名3": "asset_type",
    "原列名4": "product_warranty_start_date",
    "原列名5": "product_warranty_end_date"
}, inplace=True)
print(data)

如果不知道原列名,先打印查看:

print("原列名:", data.columns.tolist())

3. 分隔符或读取参数错误

如果CSV的实际分隔符不是逗号(比如分号;),read_csv会把所有内容读进一列,此时设置列名自然无效。先验证数据读取是否正常:

print(data.head())

如果数据挤在一列里,修改delimiter参数为正确的分隔符即可。

快速排查步骤

  1. 执行print(data.columns)查看原列名,确认数量和内容。
  2. 执行print(data.head())验证数据是否正确读取,有没有列合并的情况。
  3. 根据上述结果选择对应的解决方案。

内容的提问来源于stack exchange,提问作者Azize Lbaibi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 00:25:19