导入CSV文件时表头对齐异常,重命名列名错位问题如何解决
问题原因
你调用pd.read_csv()时指定了index_col=0参数,该参数会将CSV的第一列(即group1列)设置为DataFrame的行索引,不属于普通列集合。此时读取生成的ds1仅包含1个普通列group2,ds1.columns中仅存储group2这一个列名,因此修改ds1.columns.values[0]实际修改的是group2的列名,无法触及已经转为行索引的group1。
解决方法
根据你的实际使用需求选择对应方案:
- 场景1:需要保留原
group1列为行索引
直接修改行索引的名称即可,无需操作普通列列表:ds1.index.name = "col1" - 场景2:不需要将
group1设为行索引,两列都要作为普通列处理- 读取数据时去掉
index_col=0参数:
ds1 = pd.read_csv('C:\\Users\\jupyterwork\\data.csv')- 用更规范的
rename方法修改列名,避免直接修改columns.values带来的不可预期问题:
ds1 = ds1.rename(columns={"group1": "col1"}) - 读取数据时去掉
提示:直接修改
ds1.columns.values属于非推荐操作,pandas的列名对象默认是不可变类型,强制修改底层值容易出现逻辑异常,使用rename方法可读性和稳定性更高。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

