为什么包含 NaN 值的整数序列或数据帧列的数据类型为“float64”?

Why does a series or dataframe column of integers containing NaN values have "float64" as data type?

提问人:Gin Al 提问时间:10/16/2023 更新时间:10/16/2023 访问量:17

问:

通过使用 pd.read_csv 或定义一系列整数,如果它包含 NaN 值,则该系列或列的数据类型将变为“float64”,包括每个数值末尾的相应“.0”。

从 CSV 文件中读取的列的数据类型是我用于分析的特征之一。当列中的数据是整数或 NaN 值时,一旦表加载了 pandas.read_csv,dtype 函数就会将该列的数据类型返回为“float64”,而其值为整数。

pandas csv nan dtype

评论


答:

0赞 wotb 10/16/2023 #1

纯整数不能是 NaN。您想要的是可为 null 的 int 类型

在代码中,这可能如下所示:

df=pd.read_csv("file.csv",dtype={"col1":str,"col_with_nan":Int64})

请注意 中的大写字母 “”。IInt64

评论

0赞 Gin Al 10/17/2023
这样做的坏处是,您首先必须加载文件,而不知道哪些数据类型对应于每列,而不考虑 NaN。即使使用参数“keep_default_na = False”,它也会将列作为“object”数据类型返回。非常感谢!!
0赞 wotb 10/17/2023
你可以用类似的东西来转换一个已经存在的列df=df.astype({"col_with_nan":Int64})