【问题标题】:pandas set cell format in excel writerpandas 在 excel writer 中设置单元格格式
【发布时间】:2014-07-01 02:48:59
【问题描述】:

我正在使用 pandas 通过 python 读取和写入 excel 文件(xlsx 文件,使用 openpyxl)。我的部分数据是看起来像数字的文本。例如,在原始的 excel 文件中,我有一个单元格

123456789012345

它可以很好地作为python中的文本导入。但是,如果我再次编写 excel 文件,输出单元格的格式为“常规”并显示为

1.23e14

所以我的问题是:有没有办法在熊猫中设置数字格式?我想将它设置为'@',即openpyxl.styles.NumberFormat.FORMAT_TEXT。

很遗憾,pandas.ExcelWriter 的文档没有那么先进(即不存在)。

感谢您的帮助。

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我认为在最坏的情况下,您可以直接操作单元格。我没有安装 Excel,但也许你可以检查一下这是否有效。

    In [67]: df=pd.DataFrame ([123456789012345])
    
    In [68]: writer = pd.ExcelWriter ('e.xlsx', engine='openpyxl')
    
    In [69]: df.to_excel (writer, 'sheet1')
    
    In [70]: ws = writer.sheets['sheet1']
    
    In [71]: ws['A1'].style.number_format.format_code='@'
    
    In [72]: writer.save ()
    
    In [73]: pd.read_excel ('e.xlsx')
    Out[73]: 
                     0
    0  123456789012345
    

    【讨论】:

    • 很遗憾,这并不能完全解决问题。格式为文本,但仍显示为 1.23e14。原因是,在解压后的 xlsx 中,字符串存储在 xl/sharedStrings.xml 中,而数字存储在 xl/worksheets/sheet1.xml 中。并且通过这个解决方案,文本编号存储在 xl/worksheets/sheet1.xml 中。
    • 我刚刚发现您的解决方案有效,前提是在 df 构造中使用字符串:df=pd.DataFrame (['123456789012345'])。但是,读取函数会忽略数据类型。我将就此发布一个单独的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2017-10-24
    • 2013-02-22
    相关资源
    最近更新 更多