【问题标题】:reading a large number from excel with pandas用熊猫从excel中读取大量数据
【发布时间】:2021-07-21 19:35:21
【问题描述】:

我正在读取带有 pandas 的 xlsx 文件,并且一列包含 18 位数字,例如 360000036011012000

读取后数字转换为360000036011011968

我的代码

import pandas as pd
df = pd.read_excel("Book1.xlsx")

我也尝试将列转换为字符串,但结果相同

df = pd.read_excel("Book1.xlsx",dtype = {"column_name":"str" })

也试过engine = 'openpyxl'

同样,如果 csv 文件中存在相同的数字,则读取没有问题,但我只能从 excel 中读取。

【问题讨论】:

  • 可能是愚蠢的解决方案,但是否可以将 int 拆分为两个单元格的总和? 36011012000 和 3.6*10^12
  • @pinegulf 如果我无法阅读,我该如何拆分。我需要一个自动化的解决方案,因为我无法对文件执行手动步骤。
  • 啊。我以为你可以访问数据源。

标签: python pandas xlsx


【解决方案1】:

这是 Excel 问题,而不是 pandas 问题。见这里:

黄色标记的条目实际上是 * 10 +1 以下的数字,因此不应以 0 结尾。

在 Excel 中发生的事情似乎是数字限制为 18。但最后两个数字被解释为小数。由于这是 Excel 而不是 CSV 问题,因此 csv 可以正常工作。

解决方案:

将 Excel 中的数字格式化为文本,如第一张图片所示:=Text(CELL,0)。 然后 Pandas 可以将其作为字符串导入,但您会丢失最后一位数字的信息。因此 Excel 不应该用于超过 18 位的数字。使用不同的文件,例如 csv,通过使用前导:' 符号将数字作为字符串直接插入到 Excel 中。

【讨论】:

    猜你喜欢
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2014-08-21
    • 2020-05-28
    • 2019-01-26
    • 2013-07-23
    • 1970-01-01
    相关资源
    最近更新 更多