【问题标题】:Pandas write to CSV specify dtype熊猫写入 CSV 指定 dtype
【发布时间】:2015-12-29 19:28:16
【问题描述】:

有没有办法防止将 Pandas 数据帧写入 CSV,而不将格式化为字符串的数字转换为数字?

假设我有以下数据框:

>>> import pandas as pd
>>> d=pd.DataFrame(index=['07000','07001','07002'], data=[1,2,3], columns=['Value'])
>>> d.index.name='Zipcode'
>>> d
         Value
Zipcode       
07000        1
07001        2
07002        3
>>> 

我可以确认我的索引不是数字:

>>> print str(d.index.dtype)
object
>>> 

但是当我使用d.to_csv('MyFile.csv') 写入 csv 时,索引会转换为整数,我会丢失前导 0。有什么建议吗?

【问题讨论】:

  • 写入 csv 时确定零丢失了吗?我复制了你的结果并检查了我的 csv 文件,所有的零都在那里。我的猜测是它们会被你用来读取新文件的任何程序丢失。
  • 同意。我复制了代码。当我在 txt 编辑器中打开 csv 文件时,我得到前导零。如果您在电子表格程序中打开文件(或将其读回 pandas 数据框),则此时会删除零。
  • 啊,谢谢。所以问题实际上是当我在 csv 中阅读而不是在我编写它时。而且我可以在读取 csv 时指定 dtype,这样问题就解决了。

标签: python csv pandas


【解决方案1】:

d.to_csv('MyFile.csv') 没有问题。通过运行您的代码,我的 .csv 文件中的所有零。

如果您使用d1 = pd.read_csv('MyFile.csv', index_col=0),则d1 中的前导零将被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2014-03-28
    • 2013-05-31
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    相关资源
    最近更新 更多