[問題] 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