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

Pandas to_numeric(errors='coerce')未转无效值为NaN的问题排查与解决

问题原因及解决方法

错误根源

你代码里的核心问题是用错了loc的索引方式:app_metadata_df.loc["item_id"]是按行索引查找名为"item_id"的行,但你的数据集里"item_id"是列名,这导致你之前的pd.to_numeric和dropna操作根本没作用到目标列上,无效的文本值(比如"So")完全没被处理,所以后续astype(int)才会报错。

正确处理步骤

直接针对item_id列操作,步骤如下:

  1. 将item_id列转换为数值类型,无效值转为NaN
app_metadata_df["item_id"] = pd.to_numeric(app_metadata_df["item_id"], errors='coerce')

(这里直接用列名索引即可,或者用app_metadata_df.loc[:, "item_id"]明确选择所有行的"item_id"列)

  1. 丢弃所有item_id为NaN的行
app_metadata_df = app_metadata_df.dropna(subset=["item_id"])

(dropna的subset参数指定只检查item_id列的NaN,丢弃对应的整行,而非仅处理列数据)

  1. 将item_id转换为int类型
app_metadata_df["item_id"] = app_metadata_df["item_id"].astype(int)

完整代码

app_metadata_df = pd.read_csv(app_metadata_csv_path)
# 处理无效item_id
app_metadata_df["item_id"] = pd.to_numeric(app_metadata_df["item_id"], errors='coerce')
app_metadata_df = app_metadata_df.dropna(subset=["item_id"])
app_metadata_df["item_id"] = app_metadata_df["item_id"].astype(int)

这样就能彻底移除无效的item_id行,并将列转为正确的int类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:40:31