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

pandas如何将groupby生成的子DataFrame新列映射回原DataFrame

最优实现方案

你要实现的是按id字段匹配两个表的列,直接用pandas内置的向量化操作即可,性能远高于逐行迭代:

方案1:merge关联(最通用)

直接通过左连接把label列合并到原表,保留X_train的所有行,匹配对应id的label:

X_train = X_train.merge(crunched_X_train[["id", "label"]], on="id", how="left")

方案2:map映射(适合单列匹配场景)

先构建id到label的映射关系,再用原表的id列直接映射得到label:

# 构建id: label的映射字典
id_to_label = crunched_X_train.set_index("id")["label"].to_dict()
# 映射赋值
X_train["label"] = X_train["id"].map(id_to_label)

原代码问题说明

  • 第一种写法报错是因为你直接对两个索引不同的Series做等值判断,pandas会先按索引对齐再比较,索引不一致就会抛出该错误
  • 第二种逐行iterrows的写法是Python层的循环,数据量过万就会有明显卡顿,pandas内置的向量化操作底层是C实现,性能是前者的数百到数千倍。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:27:03