Pandas调用to_csv()保存CSV时单条记录拆分为多行如何解决
Pandas调用to_csv()单条记录拆成多行的解决方法
根本原因
导出CSV后单条记录被拆为多行,是因为DataFrame的文本字段(示例中为comment_text列)本身包含\n、\r类换行符,Pandas默认写入时不会主动处理字段内部的换行符,这些换行符会被直接识别为CSV的行分隔标记,最终导致记录断裂。
可行方案
方案1:提前清洗文本内换行符(完全匹配你需要的单行存储效果)
该方案会直接把字段内的所有换行替换为空格,导出后用任何工具打开都是单条记录占单行:# 单文本列处理示例,替换所有换行、连续换行为单空格 df['comment_text'] = df['comment_text'].astype(str).str.replace(r'[\r\n]+', ' ', regex=True) # 正常导出即可 df.to_csv('result.csv', index=False)如果需要批量处理所有文本列,无需逐列指定:
# 筛选所有字符串类型列批量清洗 str_columns = df.select_dtypes(include=['object', 'string']).columns df[str_columns] = df[str_columns].apply( lambda x: x.astype(str).str.replace(r'[\r\n]+', ' ', regex=True) ) df.to_csv('result.csv', index=False)方案2:合法包裹带特殊字符的字段(保留文本内换行的场景使用)
如果你不想删除文本中原有的换行,只需要保证CSV读取时不会出现记录错位,可以通过指定quoting参数,让Pandas给带换行、逗号、引号的字段自动加双引号包裹,符合规范的CSV解析工具(Pandas、Excel等)读取时会自动识别引号内的内容属于同一字段,不会拆分行:import csv # QUOTE_MINIMAL模式会自动给含特殊字符的字段加引号 df.to_csv('result.csv', index=False, quoting=csv.QUOTE_MINIMAL)注意:该方案导出的文件用纯文本编辑器打开时,仍能看到字段内部的换行,属于合法CSV格式,不存在数据错误。
内容的提问来源于stack exchange,提问作者Vigneshwaran
相关产品推荐
相关产品推荐

