【问题标题】:Pandas - read_csv scientific notation large numberPandas - read_csv 科学记数法大数
【发布时间】:2020-01-23 19:06:08
【问题描述】:

我正在尝试用 pandas 读取一个 csv 文件,其中包含一些科学计数法行。

当它读取值时,它并没有捕获真正的底层数字。当我重新利用数据时,真正的价值就会丢失。

df = pd.read_csv('0_IDI_Submitter_out.csv')

我试图保留的基本真实值如下:

      INPUT: Extra 1
0     8921107
1     56300839420000
2     56207557000000

但是,pandas 将其读取为

 INPUT: Extra 1
0     8921107
1     5.63008E+13
2     5.62076E+13

如果我尝试编写新的 csv 或使用此数据,则值显示为:

 INPUT: Extra 1
0     8921107
1     56300800000000
2     56207600000000

如何让 pandas 读取真实数字而不是导致其转换错误的科学记数法?

【问题讨论】:

  • '如何摆脱 pandas 将 excel 表中的大数转换为指数..'stackoverflow.com/questions/38689125/…
  • @brokenfoot 我相信这只是为了显示目的,不能解决我的问题。就我而言,值实际上是被熊猫改变了。
  • 无法复制。您显示的数字可以用np.int64 表示,pandas 以这种方式成功读取它们。请将精确的 csv 文件显示为文本。如果你是用 Excel 写的,那问题可能就在那里……

标签: python pandas scientific-notation


【解决方案1】:

问题似乎是在 Excel 中打开一个 CSV 文件,其中包含大数字或显示为大数字的字符串,如产品代码、SKU、UPC 等,会自动转换为科学计数法。完成此操作后,您必须手动进入 Excel 并重新格式化,但尝试从 Pandas 执行此操作似乎是不可能的,并且数据完整性丢失。

但是,如果我从来没有在 Excel 中打开文件并纯粹通过 Pandas 处理它,那一切都很好。同样,如果您纯粹在 Excel 中工作,您也很好。

我的最终结论是,在处理大数字或显示为大数字的字符串(如产品代码或 UPC)时,最好不要将 pandas 与 Excel 混合使用。作为替代方案,我刚开始将所有数据帧保存为 pickle 文件而不是 csv。

希望以后能对大家有所帮助。

谢谢

【讨论】:

    【解决方案2】:

    似乎无法重现您的问题,但也许这会起作用?

    df = pd.read_csv('0_IDI_Submitter_out.csv', dtype={'INPUT: Extra 1':np.object_})
    

    另外,检查数据框的数据类型:

    result = df.dtypes
    print(result)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 2017-04-05
      相关资源
      最近更新 更多