Utp*_*utt 6 python xlsx pandas
例如,我正在读取带有 pandas 的 xlsx 文件,并且一列包含 18 位数字360000036011012000
读取后数字转换为360000036011011968
我的代码
import pandas as pd
df = pd.read_excel("Book1.xlsx")
Run Code Online (Sandbox Code Playgroud)
我也尝试将列转换为字符串,但结果是相同的
df = pd.read_excel("Book1.xlsx",dtype = {"column_name":"str" })
Run Code Online (Sandbox Code Playgroud)
还尝试过engine = 'openpyxl'
另外,如果 csv 文件中有相同的数字,则读取工作正常没有问题,但我必须仅从 Excel 读取它。
这是 Excel 问题,而不是 pandas 问题。看这里:
黄色标记的条目实际上是 * 10 +1 以下的数字,因此不应以 0 结尾。

Excel 中发生的情况似乎是数字限制为 18。但最后两个数字被解释为小数。由于这是 Excel 问题而不是 CSV 问题,因此 csv 就可以正常工作。
解决方案:
将 Excel 中的数字格式化为文本,如第一张图片所示:=Text(CELL,0)。然后 Pandas 可以将其作为字符串导入,但您将丢失最后一位数字的信息。因此,Excel 不应用于超过 18 位数字的数字。使用不同的文件,例如 csv,通过使用前导:' 符号将数字作为字符串直接插入到 Excel 中。