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/cn.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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP