pandas.to_csv乱码、丢失行、自动换行如何处理

pandas.to_csv乱码、丢失行、自动换行如何处理

问题描述

乱码

python pandas的数据在代码中并未乱码,使用panda.to_csv保存后,用excel打开乱码。

自动换行

用excel打开文件,发现特别长的文本会自动换行,导致整个数据格式乱掉。用pandas.read_csv再次读取发现文件格式同样乱掉,即一列中有其他列的值。

丢失行

解决完自动换行问题后,发现丢失行问题仍存在。用excel打开文件,发现行数对不上,丢失数行。使用pandas.read_csv读取文件发现文件行数没少。

解决办法

乱码

假定数据框对象为df,设置参数encoding=‘utf-8-sig’

df.to_csv('df.csv',index=False,encoding='utf-8-sig')

自动换行

参考两个blog,但并未解决;后面自己测试出的方法。
已有办法,但有缺陷。将文本保存至excel而不是CSV,可以解决自动换行,但是excel会自动删除超长的文本
保存至excel代码如下:

#import openpyxl
import xlsxwriter
df.to_excel(base_path + 'result.xlsx', engine='xlsxwriter', index=False, encoding='utf-8')

代码参考保存excel
引擎设置为openpyxl保存xlsx会失败,可能因为自动换行的文件格式是乱的。
保存后如blog所讲,excel删除了过长文本。

正确做法
将sep设置为制表符"\t"即可

df.to_csv('df.csv',index=False,sep='\t',encoding='utf-8-sig')

丢失行

丢失行一部分原因是因为换行后,读取数据,清洗了空值所致。但是我解决完换行问题后依然存在,read_csv读取却正常。后来用Excel导入数据功能即可解决。

有帮助记得点赞收藏哦~

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值