pandas读取csv时如何将含NaN的浮点数列转换为整数类型
解决方案
方案1:使用Pandas可空整数类型(推荐,保留空值语义)
Pandas 0.24及以上版本提供了大写开头的Int64可空整数类型,支持同时存储整数和空值,不需要修改原始数据的空值逻辑,完美适配需求。
你可以在读取CSV时直接指定类型:
import pandas as pd df = pd.read_csv( "你的文件路径.csv", dtype={ "RequestCount": "Int64", "ScheduledCount": "Int64", "PerformedCount": "Int64" } )
如果已经读取完数据,也可以单独对目标列做类型转换:
# 单个列转换 df["RequestCount"] = df["RequestCount"].astype("Int64") df["PerformedCount"] = df["PerformedCount"].astype("Int64") # 批量转换所有float类型的数值列 float_cols = df.select_dtypes(include="float64").columns df[float_cols] = df[float_cols].astype("Int64")
注意:
Int64首字母为大写,和原生不支持空值的int64(小写i)做区分,该类型下的空值会统一为pd.NA,整数运算逻辑不受影响,不会自动转为float类型。
方案2:填充空值后转普通int(适合业务允许空值设默认值的场景)
如果业务要求不能存在空值,需要给空值设置默认值(比如0、-1等业务约定值),可以先填充空值再做类型转换:
# 空值填充为0后转int df["RequestCount"] = df["RequestCount"].fillna(0).astype(int) df["PerformedCount"] = df["PerformedCount"].fillna(0).astype(int)
如果需要批量处理所有数值列:
float_cols = df.select_dtypes(include="float64").columns df[float_cols] = df[float_cols].fillna(0).astype(int)
内容的提问来源于stack exchange,提问作者Aman Raheja
相关产品推荐
相关产品推荐

