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

如何将DataFrame中float64类型ID列转为int类型并处理缺失值?

字符串格式float转int的解决方案

你的代码无效的核心原因是目标列是字符串类型(object),而非真正的数值型float,直接调用astype无法完成转换。以下是可行的处理步骤:

单列处理(以ProviderID为例)

import numpy as np
import pandas as pd

# 第一步:将字符串格式的"x.0"转换为数值型,无法转换的内容(含原缺失值)转为NaN
df_claims['ProviderID'] = pd.to_numeric(df_claims['ProviderID'], errors='coerce')

# 第二步:临时填充缺失值、转int、还原缺失值
# 这里用-1作为临时填充值(选业务中不存在的数值即可,避免覆盖真实数据)
df_claims['ProviderID'] = df_claims['ProviderID'].fillna(-1).astype('int64').replace(-1, np.nan)

批量处理三列

如果要一次性处理ProviderID、Vender、PCP三列,用循环简化操作:

cols_to_convert = ['ProviderID', 'Vender', 'PCP']

for col in cols_to_convert:
    # 字符串转数值
    df_claims[col] = pd.to_numeric(df_claims[col], errors='coerce')
    # 处理缺失值并转换类型
    df_claims[col] = df_claims[col].fillna(-1).astype('int64').replace(-1, np.nan)

关键说明

  • pd.to_numeric(..., errors='coerce'):这一步是核心,它能把字符串形式的数字转成真正的数值,同时把所有无效内容(比如空值、非数字字符串)统一转为NaN,避免后续转换报错。
  • 临时填充值选-1而非0的原因:如果你的业务数据中存在合法的0值,用0填充会覆盖真实数据,选一个业务中不可能出现的数值更安全;如果确定数据里没有0,也可以用0替代-1。

内容的提问来源于stack exchange,提问作者Jaeho Ahn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:10:29