You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:45:04