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导入数据功能即可解决。

有帮助记得点赞收藏哦~

你可能感兴趣的:(python,pandas,python,开发语言)