Python 具有19位长整数的截断问题

Python 具有19位长整数的截断问题,python,pandas,dataframe,decimal,truncation,Python,Pandas,Dataframe,Decimal,Truncation,我从web服务下载了一个CSV文件。当我使用pandas.read_csv导入csv时,19位长的ID被截断为小数。然后我使用pd.options.display.float_format='{.6f}'。format完整显示ID。然而,当我将ID与web服务中的ID进行比较时,python完全更改了最后3位数字,只保留了前16位数字。当我下载csv文件时,我以为是csv文件问题,但当我使用记事本打开它时,ID与web服务中的ID相同。我试过类似的东西 df = pd.read_csv(file

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

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

但是这些代码不起作用


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

对于我来说,默认解决方案正在工作,但可能需要
np.int64

df = pd.read_csv(filepath, dtype={'ID':np.int64})
如果可能,某些缺失值和版本为0.24+使用:


对于我来说,默认解决方案正在工作,但可能需要
np.int64

df = pd.read_csv(filepath, dtype={'ID':np.int64})
如果可能,某些缺失值和版本为0.24+使用:


I get ValueError:无法安全地将传递的int64用户数据类型转换为float64数据类型数据。我想这是因为某些单元格有NaN值。我仍然得到相同的值错误。@ShaunLim-您的pandas版本是
0.24+
?如果是,返回什么代码
ValueError
?-我正在使用Jupyter笔记本。现在的错误是“ValueError:Integer列在第11列中有NA值”(即ID列)。我尝试按块导入大文件,并导入没有NaN值的前N行,ID与Web服务的ID匹配。然后,我尝试从web服务下载前100,00行完全相同的数据,并将其编码为
df.fillna({'ID':0})
,然后将其导入Jupyter笔记本,结果成功了!但问题是我从Databricks批量下载了数据,因此
df.fillna({'ID':0})
不起作用,因为批量下载的代码不同。。。或者,也许有一种方法可以将
df.fillna({'ID':0})
放入我不知道的批量下载代码中。但无论如何,至少现在我知道是NA值导致了这个问题。你知道怎么修吗?有没有一种方法可以同时导入文件和删除NA?我发现当我导入文件时,如果块在ID列中不包含NaN值,那么ID是可以的。ID列包含NaN值时,所有ID值都将更改为不同的数字(最后3-4位)。I get ValueError:无法安全地将传递的int64用户数据类型转换为float64数据类型数据。我想这是因为某些单元格有NaN值。我仍然得到相同的值错误。@ShaunLim-您的pandas版本是
0.24+
?如果是,返回什么代码
ValueError
?-我正在使用Jupyter笔记本。现在的错误是“ValueError:Integer列在第11列中有NA值”(即ID列)。我尝试按块导入大文件,并导入没有NaN值的前N行,ID与Web服务的ID匹配。然后,我尝试从web服务下载前100,00行完全相同的数据,并将其编码为
df.fillna({'ID':0})
,然后将其导入Jupyter笔记本,结果成功了!但问题是我从Databricks批量下载了数据,因此
df.fillna({'ID':0})
不起作用,因为批量下载的代码不同。。。或者,也许有一种方法可以将
df.fillna({'ID':0})
放入我不知道的批量下载代码中。但无论如何,至少现在我知道是NA值导致了这个问题。你知道怎么修吗?有没有一种方法可以同时导入文件和删除NA?我发现当我导入文件时,如果块在ID列中不包含NaN值,那么ID是可以的。当ID列包含NaN值时,所有ID值都将更改为不同的数字(最后3-4位)。
df = pd.read_csv(filepath, dtype={'ID':'Int64'})