[问题] pandas.to_csv 字串型态的数字

楼主: nepholi (我不是砲哥)   2019-12-25 10:11:58
(已解)↓↓↓
使用纯文字编辑器开启CSV档案发现前置0都还在
所以诚如H大回文所说 是excel等编辑器的显示方式造成的视觉上错觉
实际上卡号资料依然使用字串储存
后续使用C++去跑也没问题
(已解)↑↑↑
Hi all,
小弟刚接触Py没多久
经历只有用google大神边查边学基本语法
然后只拼出一套暴力型爬虫
所以可能有些东西不知道怎么查或找错方向再请各位指教
这次要处理一笔资料是excel档要转成csv给后续一支正常运作中的C++读取
其中excel的内容为 (以下为虚构)
部门 | 卡号 | 名字 | 时间 |
ABC | 00010 | John | 2019/12/25 08:00:01 |
ABC | 00011 | Tom | 2019/12/25 08:02:55 |
..以此类推
用最直接的写法
df = pd.read_excel('test.xlsx', usecols="A:D", dtype={'卡号':str})
可以成功读进我想要的资料及型态
1.卡号为str (为了保留完整五位数)
2.日期为datatime
然后
df.to_csv('hello.csv', index=None, header=True, encoding='utf-8-sig',
quoting=csv.QUOTE_NONNUMERIC)
这句跑完之后产出的csv其中卡号跟日期字段却不是我想要的5位数及显示秒数
而是
部门 | 卡号 | 名字 | 时间 |
ABC | 10 | John | 2019/12/25 08:00 |
ABC | 11 | Tom | 2019/12/25 08:02 |
我有想过是不是csv的储存格格式造成
日期的部分证实的确是
但卡号的部分被默认为"通用格式"导致我的卡号被去掉了前置0
不晓得有没有办法可以在python的code里面去设定这个呢
我找了pandas的官网说明to_csv但无斩获
不知道是不是我误会或漏看了..
感谢XD
P.S. 因为C++里面读取卡号后并没有默认要做补0的动作
所以希望能在py这部分就处理掉
作者: ctr1 (【积π】)   2019-12-25 16:44:00
把每个卡号前面加个单引号了 '00010
作者: Hsins (翔)   2019-12-25 18:08:00
楼上那是针对试算表内格式的处理方式,但他这里要丢给 C++处理的,这样反而是多此一举...

Links booklink

Contact Us: admin [ a t ] ucptt.com