900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Python pandas导入导出excel csv 遇到的问题总结

Python pandas导入导出excel csv 遇到的问题总结

时间:2019-09-15 16:57:24

相关推荐

Python pandas导入导出excel csv 遇到的问题总结

问题描述:

这两天做了一个需要修改xls格式的excel表格中的一些数据的一个Python程序,其中遇到的坑有:

1.要求最后都要转为xls格式,不要csv格式

pandas read_excel()后 to_excel()只能实现一次导出为一整个表格,并不能做到像to_csv()一样可以更改其中参数变更为一次增加一行数据,而我做的程序有时需要具有将多个表格汇总为一个表格的功能,

所以必须先read_excel()再to_csv(),最后read_csv()再to_excel()

2.低版本mysql数据库无法到入string类型的日期数据(“/01/01 00:00:00”)

问题描述:to_csv()后的数据中String类型的数据直接导入到utf-8编码格式的我的数据库中如果string类型的时间数据符合时间格式规范会自动变为mysql datetime格式的数据(可能是高版本的原因),但是在别人的数据库中会改变时间,可能是编码格式的问题,也有可能是数据库版本低的问题,低版本mysql数据库必须转入datetime格式解决方法如下:

原因:因为中间过程有一个read_csv(),而csv格式中的数据全部为字符串类型的数据,对数据不加处理直接to_excel()时会发生所有的数据全部为文本类型,

像时间格式的数据,在to_excel()后还是文本类型,虽然我们可以在office中使用数据->分列的方法修改为时间格式(修改好后缩短单元格行间距时间格式的数据会变成一串#######),但是面对有很多行需要修改为时间格式的数据还是需要使用修改程序的方法,

解决:to_excel()时的数据对其需要修改的列进行遍历修改

字符串格式转为时间格式:转为Python中datetime类型即可(这时我们可以使用parse包from dateutil.parser import parse),例如: parse(“/01/01 00:00:00”)

3.read_excel()后读取到的身份证号码类型数据有些为int类型

问题描述:身份证号码类型的数据从read_excel()后有些纯数字字符串to_excel()时会自动变为长整型的数据,因为18位过长,程序无法将完整的数据to_excel(),最后呈现在xls表格中的数据为科学计数法(后几位全是0),

而通过read_csv()后to_excel()后不会发生这种问题是因为csv中的数据全部为字符串类型

解决:read_excel()后的身份证号码类型的数据

str = 1234567891012345678+""将其变为字符串类型再to_excel()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。