Python 板


LINE

※ 引述《nepholi (我不是砲哥)》之銘言: : 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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 據我所知,如果你在使用 pandas 讀入檔案的時候已經有使用 dtype, 或者在後續操作 dataframe 時,有透過 astype 將資料表內容轉為字串格式的話。 那麼在最後使用 to_csv() 轉換成 csv 格式的純文字檔是不會格式跑掉的。 由於你提到了「通用格式」,那麼最有可能造成被截去前方零位的原因, 是使用了 Excel, Numbers 或是 LibreOffice 這類試算表軟體去打開 csv 檔 如果你沒有特別規定讀入時要進行的格式操作, 這些軟體通常會自作聰明地替你處理。 --- 關於 csv 檔,我們可以看一下 Wiki 上面的說明: 逗號分隔值 (CSV, Comma-Separated Values),其檔案以純文字形式儲存表格資 料(數字和文字)。純文字意味著該檔案是一個字元序列,不含必須像二進位數字 那樣被解讀的資料。 因為通常可以用表格形式表現,所以可以用試算表軟體打開,但是本質是純文字 。建議使用純文字的編輯器,比如:記事本、notepad++、Sublime Text 或者是 VS Code 去開,看看這些數值是不是帶有 leading zero,如果有的話就不用管 他了,你轉換的檔案是正確的,只是試算表自己自作聰明而已,對於後續用 C++ 操作是不會有影響的。 至於日期的部份,你也可以同樣在讀入時存成字串就不會有這個問題了。 : 不曉得有沒有辦法可以在python的code裡面去設定這個呢 : 我找了pandas的官網說明to_csv但無斬獲 : 不知道是不是我誤會或漏看了.. : 感謝XD : P.S. 因為C++裡面讀取卡號後並沒有預設要做補0的動作 : 所以希望能在py這部分就處理掉 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.247.1 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1577247803.A.76C.html
1F:推 cuteSquirrel: 推。csv的觀念解析 12/25 14:01
2F:推 moonbright: 給推~ 解釋蠻好的! 12/25 14:17
3F:推 kobe760903: 請問一下我在to_csv是整數1都會變成1.0是為什麼呢 12/25 16:08
4F:推 kobe760903: 試了dtype=str好像就解決了 12/25 16:14
這好像跟我的理解有所不同,如果是浮點數的話,會取到小數點後的最大有效值 ,比如說: 1.903900 -> 1.9049 2.410000 -> 2.41 3.541130 -> 3.54113 如果是整數的話,出來應該依然還是整數而不會被轉換。另一個可能的狀況是由 於有 NaN 的存在所進行的型態轉換: https://bit.ly/2Qev3Iy > In the absence of high performance NA support being built into NumPy > from the ground up, the primary casualty is the ability to represen > NAs in integer arrays. > > This trade-off is made largely for memory and performance reasons, > and also so that the resulting Series continues to be “numeric”. > > If you need to represent integers with possibly missing values, use > one of the nullable-integer extension dtypes provided by pandas: > > Int8Dtype, Int16Dtype, Int32Dtype, Int64Dtype 轉字串應該會比較快一點...
5F:→ kobe8112: 我自己用其他程式處理CSV的時候如果中間被Excel存取過也 12/25 16:55
6F:→ kobe8112: 很容易出問題,常見的坑都是Windows在檔案/編碼亂搞 12/25 16:58
試算表工具可以拿來開啟 csv 檔案,但 csv 檔案並不具備試算表的詳細格式, 這是很多人常常會搞不清楚的,要用試算表開啟 csv 檔案,建議使用匯入的方 式而非直接開啟,除此之外建議保存時另存新檔。 甚至我之前也有遇過 Excel 匯入 csv 之後,他的 parser 抓錯沒有成功匯入的 狀況。 ※ 編輯: Hsins (140.112.247.1 臺灣), 12/25/2019 18:26:21
7F:推 nepholi: 我用純文字編輯器打開的確卡號的前置0還在 所以是我太 12/26 10:52
8F:→ nepholi: 下意識地認為要用EXCEL開CSV了= = 原來一直都沒事 12/26 10:53
9F:→ nepholi: 感謝大大 12/26 10:53







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP