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'})
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'})