使用Pandas更新CSV列值时如何去除开头多余逗号
解决Pandas写入CSV时开头多出一列的问题
你遇到的开头多余逗号,本质是Pandas把DataFrame的索引列写入了CSV文件——因为CSV原本没有这个列,所以就会在开头多出一个空列头(表现为最前面的逗号)。
看你的代码,问题出在两个参数的位置错误:
read_csv里的header=None被错误放到了str.format()的参数列表里,根本没传递给read_csv方法;- 更关键的是,
to_csv需要的index=False也被误塞进了str.format()的参数里,导致Pandas默认把索引列写入了CSV,这就是多余逗号的来源。
修正后的代码
# 读取CSV:如果原文件有表头(比如你的例子里的Name,Age,Gender),就不要加header=None df = pd.read_csv("{}/output/Float_Ingestion_Expected_Output_files/{}/{}.csv".format(str(parentDir), test_case_name, file_name)) # 更新age列的值 df['age'] = '2323323232444' # 写入CSV时,把index=False作为to_csv的参数传入,禁用索引列写入 df.to_csv("{}/output/Float_Ingestion_Expected_Output_files/{}/{}.csv".format(str(parentDir), test_case_name, file_name), index=False) print(df)
额外说明
如果你的CSV文件原本没有表头,确实需要用header=None,记得把它放在read_csv的参数里,而不是format的参数中:
df = pd.read_csv("{}/output/Float_Ingestion_Expected_Output_files/{}/{}.csv".format(str(parentDir), test_case_name, file_name), header=None)
核心逻辑就是:通过index=False告诉Pandas不要把DataFrame的索引写入CSV,这样就不会出现开头的多余逗号,CSV结构也不会错位。
内容的提问来源于stack exchange,提问作者Pratik
相关产品推荐
相关产品推荐

