美文网首页数据科学
一周一技 | 完美解决CSV转Excel长数字显示格式问题

一周一技 | 完美解决CSV转Excel长数字显示格式问题

作者: 绝世一只猫 | 来源:发表于2019-03-17 19:19 被阅读889次

    经常用表格工具的同学肯定都遇到过一个存在已久的坑:使用Excel,WPS等处理身份证、银行卡等长数字都会被自动转换成科学计数法显示,然而我们并不需要它去做这个转换!

    CSV原数据


    如图所示,这是我生成的一个CSV原始数据。

    Excel打开

    WPS打开

    Numbers打开


    貌似成功了,但是Numbers只能处理65535行数据(255*257),所以面对“大数据”还是束手无策。
    numbers应该是把CSV里所有的数据都当成字符串处理,而其它表格软件都做了多余的事。


    下面带大家来解决这个问题


    Program A

    step1

    Excel打开CSV文件,选择数据>>分列(或者分栏)进入下图页面。

    step2
    step3
    over

    全部都被转换成文本格式且加上了文本格式的标记。
    但是这样操作会不会麻烦了点,有没有更简单的?
    有。

    Program B

    step1

    右键单击列名>>选中设置单元格格式

    step2

    在自定义格式种输入空格和零 >> “ 0”


    Excel3 step2.png
    over

    达到了效果,但步骤还是不够简单。

    Program C

    step1

    选择开始 >>常规

    step2
    over

    还是当成数字处理,但是换了种格式。

    以上方法都只能说基本解决了问题,但是并没有完全解决。
    细心的同学会发现,我的CSV里的第22、23、24行的数字第一位都是“0”,以上方法都默认去掉了第一位的“0”。如果并不影响使用,那就没什么问题,但是这个数据失去了准确性。

    Program D (完美解决方案)

    step1

    为了Excel打开的时候能还原数据,我用代码摸索一番。
    这时候会Python与不会Python的差距就体现出来了(手动滑稽)。
    其实只需要3行代码。

    import pandas as pd
    f_csv = pd.read_csv('demo.csv', dtype=str)  #如果不指定dtype这个参数,有些环境下不能成功。
    f_csv.to_excel('demo2.xlsx', sheet_name='data')
    

    不过运行的时间比较长,如果数据量较大,代码执行个几分钟也是正常的。

    over

    数字都被标记为字符串格式,所有数据都完整的显示出来了。

    微信公众号:爬虫 (一周一技,分享简单实用的IT技能)

    相关文章

      网友评论

        本文标题:一周一技 | 完美解决CSV转Excel长数字显示格式问题

        本文链接:https://www.haomeiwen.com/subject/ryyymqtx.html