Pandas修改CSV后保存出现Unnamed列和多余行号怎么解决
问题原因
- 多余行号索引:pandas的
to_csv()方法默认index=True,会自动将DataFrame的行索引作为新的第一列写入CSV,也就是你看到的最左侧行号列。 - Unnamed多余列存在两个触发原因:
- 原CSV的表头行存在空值,pandas读取时会自动将空表头命名为
Unnamed:x格式 - 代码执行顺序错误:你读取文件后直接执行了
to_csv()保存,之后才修改单元格内容,修改后的内容根本没有写入文件;且第一次保存时带了行索引,下次读取时这个多余的行索引列没有对应表头,就会被标记为Unnamed列,反复操作会积累更多Unnamed列。
- 原CSV的表头行存在空值,pandas读取时会自动将空表头命名为
修复方案
- 调整代码执行顺序:先修改单元格内容,再执行保存操作
- 保存CSV时添加
index=False参数,禁止写入行索引 - 读取后替换Unnamed开头的列名为空,保留原有空表头的效果
修复后的参考代码如下:
import pandas as pd # 读取文件,保留空值不自动转为NaN equations_reader = pd.read_csv("bank.csv", keep_default_na=False) # 将Unnamed开头的列名替换为空,匹配原空表头效果 equations_reader.columns = [col if not col.startswith('Unnamed') else '' for col in equations_reader.columns] # 修改指定单元格 add_e_trial = equations_reader.at[bank_indexer_addbalance, 'Balance'] = read_balance_add + coin_amount # 保存时禁止写入索引 equations_reader.to_csv('bank.csv', index=False)
内容的提问来源于stack exchange,提问作者Dtimer
相关产品推荐
相关产品推荐

