提问人:Gin Al 提问时间:10/16/2023 更新时间:10/16/2023 访问量:17
为什么包含 NaN 值的整数序列或数据帧列的数据类型为“float64”?
Why does a series or dataframe column of integers containing NaN values have "float64" as data type?
问:
通过使用 pd.read_csv 或定义一系列整数,如果它包含 NaN 值,则该系列或列的数据类型将变为“float64”,包括每个数值末尾的相应“.0”。
从 CSV 文件中读取的列的数据类型是我用于分析的特征之一。当列中的数据是整数或 NaN 值时,一旦表加载了 pandas.read_csv,dtype 函数就会将该列的数据类型返回为“float64”,而其值为整数。
答:
0赞
wotb
10/16/2023
#1
纯整数不能是 NaN。您想要的是可为 null 的 int 类型。
在代码中,这可能如下所示:
df=pd.read_csv("file.csv",dtype={"col1":str,"col_with_nan":Int64})
请注意 中的大写字母 “”。I
Int64
评论
0赞
Gin Al
10/17/2023
这样做的坏处是,您首先必须加载文件,而不知道哪些数据类型对应于每列,而不考虑 NaN。即使使用参数“keep_default_na = False”,它也会将列作为“object”数据类型返回。非常感谢!!
0赞
wotb
10/17/2023
你可以用类似的东西来转换一个已经存在的列df=df.astype({"col_with_nan":Int64})
评论