问题描述
乱码
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导入数据功能即可解决。
有帮助记得点赞收藏哦~