19 位长整数的截断问题

Truncation issue with 19 digit long integer

DataFrame

我从网络服务下载了一个 CSV 文件。当我使用 pandas.read_csv 导入 csv 时,19 位长 ID 被截断为小数。然后我使用 pd.options.display.float_format = '{:.6f}'.format 来完整显示 ID。但是,当我将 ID 与 Web 服务中的 ID 进行比较时,python 完全改变了最后 3 位数字,只保留了前 16 位数字。我下载的时候以为是csv文件的问题,但是用记事本打开的时候,ID和web服务里面的一样。我试过类似

df = pd.read_csv(filepath, dtype={'ID':str})

df = pd.read_csv(filepath, dtype={'ID':np.int})

但代码不起作用。

为了更好地说明我的问题,我附上了 DataFrame 的屏幕截图。有什么办法可以保持ID不变?谢谢。

对我来说,默认解决方案有效,但可能需要 np.int64:

df = pd.read_csv(filepath, dtype={'ID':np.int64})

如果可能缺少一些值并且 pandas 版本是 0.24+,请使用 Int64:

df = pd.read_csv(filepath, dtype={'ID':'Int64'})