Pandas转换/处理CSV时自动添加行号列如何避免?
解决Pandas保存CSV时自动添加行号列的问题
嘿,这个问题我刚学Pandas的时候也踩过坑!其实原因很简单:Pandas的to_csv()方法默认会把DataFrame的索引(也就是你看到的行号)写入到CSV文件里,所以下次读取的时候,这个索引就变成了一个无列名的Unnamed: 0列。
给你两种解决思路,按需选择:
1. 优化整个流程(推荐)
不用生成中间的test.csv文件,直接从JSON读取后处理并保存,一步到位还能减少冗余操作:
import pandas as pd # 读取JSON数据 data = pd.read_json("test.json") # 删除不需要的列 data = data.drop(["cashtag", "id", "source"], axis=1) # 保存CSV时添加index=False,禁止写入索引列 data.to_csv("test_cleaned.csv", index=False) # 查看处理后的结果 data.head()
2. 修改现有代码的关键参数
如果你还是想保留中间文件的步骤,只需要在每次调用to_csv()时加上index=False参数即可:
- 转换JSON到CSV时:
pd.read_json("test.json").to_csv("test.csv", index=False)
- 处理后保存清理后的CSV时:
data.to_csv("test_cleaned.csv", index=False)
额外小技巧:处理已有的带Unnamed列的CSV
如果已经生成了带Unnamed: 0列的CSV文件,读取时可以直接把它当作索引,或者读取后删除:
# 方法1:读取时指定index_col=0,把Unnamed列当作DataFrame的索引 data = pd.read_csv("test.csv", index_col=0) # 方法2:读取后直接删除该列 data = pd.read_csv("test.csv").drop("Unnamed: 0", axis=1)
这样处理后,你的输出CSV就只会保留sentiment score和spans这两列,不会再出现额外的行号列啦!
内容的提问来源于stack exchange,提问作者Fabs
相关产品推荐
相关产品推荐

