如何避免导出CSV时输出DataFrame的索引ID?
问题解决方法
你的问题出在直接将整个DataFrame对象作为值传入writerrow,csv模块无法正确解析DataFrame,导致输出异常。以下是两种解决方式:
方法一:使用pandas自带的to_csv(推荐)
pandas内置的导出方法更简洁,能直接处理列名映射和索引移除:
data.to_csv('data.csv', columns=['id'], header=['ID'], index=False)
columns=['id']:指定只导出原DataFrame的id列header=['ID']:将表头重命名为IDindex=False:禁止导出索引列
方法二:用csv模块逐行写入
如果坚持使用csv模块,需要遍历DataFrame的每一行,取出对应id值写入:
import csv with open('data.csv', 'w', newline='') as csvfile: fieldnames = ['ID'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() # 遍历DataFrame的每一行,提取id值 for _, row in data.iterrows(): writer.writerow({"ID": row['id']})
错误原因说明
你之前的代码writer.writerrow({"ID":data})是把整个DataFrame对象赋值给了ID字段,csv模块会把DataFrame转换成字符串形式,因此出现了0 data这种异常输出——这不是索引的问题,而是传入的值本身不符合csv写入的要求。
内容的提问来源于stack exchange,提问作者sheep
相关产品推荐
相关产品推荐

