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

使用groupby.nunique与transform赋值新列时结果不符的问题

问题原因及解决办法

核心原因1:列名拼写错误

你代码里的uniqe_id是拼写错误(正确应为some_id,和你第一次成功调用的列名一致)。拼写错误会导致Pandas无法定位到目标列,触发异常行为,比如返回全量相同的默认值,这是出现“除第一行外其余行重复第一行数值”的直接原因之一。

核心原因2:跨表对齐不匹配

你是将source_table的分组计算结果赋值给另一张表table,如果两张表的disease列分组分布、索引结构不一致,Pandas自动对齐时会出现匹配错误,仅将第一个匹配到的分组值填充到所有行,其余行因无法正确匹配而重复该值。

正确实现方式

方式一:用字典映射(推荐,兼容性更强)

先将分组计算结果转为字典,再通过map方法映射到table的disease列:

# 生成分组唯一ID数的映射字典
unique_id_map = source_table.groupby("disease")["some_id"].nunique().to_dict()
# 为table添加新列
table["unique_ids"] = table["disease"].map(unique_id_map)

方式二:修正拼写并强制值赋值

如果确认两张表的disease列完全匹配,可修正拼写后直接取transform结果的数值赋值:

# 修正列名拼写,直接取values避免索引对齐问题
table["unique_ids"] = source_table.groupby("disease")["some_id"].transform("nunique").values

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:21:12