使用Pandas读写无表头双列CSV时如何保持双列格式?
解决无表头两列CSV保存后变为单列的问题
我来帮你排查并解决这个问题——这种情况通常是读取或保存时的参数设置不对导致的,咱们一步步来:
1. 正确读取无表头的CSV文件
你用pd.read_csv('csvfile')读取时,pandas默认会把文件的第一行数据当作列名,这就会导致原本两列的数据被错误解析:第一行变成表头,剩下的行如果没被正确识别为两列,后续处理后保存自然会出问题。
所以读取时必须加上header=None参数,明确告诉pandas这个文件没有表头,它会自动用0、1作为默认列名,确保两列数据被正确加载:
import pandas as pd # 正确读取无表头的两列CSV inp = pd.read_csv('csvfile', header=None)
2. 修改数据后正确保存
修改完数据后,保存时要注意两个关键点:
- 不要把pandas自动生成的列名(0、1)写入新文件(因为原文件没有表头),所以要加
header=False参数; - 不要把pandas的索引列写入文件(默认会写,这会导致多出一列),所以要加
index=False参数; - 如果你的CSV分隔符不是默认的逗号(比如制表符、分号),还要指定
sep参数和原文件一致,确保列分隔正确。
示例代码:
# 这里是你修改数据的操作,比如修改第一行第一列的值 inp.iloc[0, 0] = "new_value" # 保存为无表头的两列CSV inp.to_csv('csvfile_new', header=False, index=False)
为什么之前会变成单列?
大概率是因为读取时没加header=None,pandas把第一行数据当作了唯一的列名,后续所有数据都被解析成了单列,保存后自然就是单列格式了。按照上面的方法调整参数,就能完美保持原有的两列无表头格式啦。
内容的提问来源于stack exchange,提问作者Artur Müller Romanov
相关产品推荐
相关产品推荐

