5

例如,我正在读取带有熊猫的 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 中读取它。

4

1 回答 1

0

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

在此处输入图像描述

黄色标记的条目实际上是 * 10 +1 以下的数字,因此不应以 0 结尾。 在此处输入图像描述

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

解决方案:

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

于 2021-04-28T13:11:02.820 回答