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

pandas使用groupby(col).nunique()赋值新列返回NaN原因求解

问题原因

你遇到的NaN问题是索引对齐规则导致的:
df.groupby('chain_id').chain_event_id.nunique() 返回的是一个Series,它的索引是分组键chain_id的去重值(也就是[511, 666]),而你原始DataFrame的索引是[0,1,2,3],两者索引完全不匹配。pandas在给列赋值时会自动按索引对齐,找不到匹配索引的位置就会填充NaN。

正确实现方式

要让分组统计结果和原df的行一一对应,需要用transform方法,它会把分组聚合后的结果广播到组内的每一行,保持和原DataFrame完全一致的索引:

df['events_in_chain'] = df.groupby('chain_id')['chain_event_id'].transform('nunique')
运行验证

执行上述代码后打印df的结果如下:

chain_id  chain_event_id  events_in_chain
0       511               1                2
1       511               2                2
2       511               1                2
3       666               1                1

完全符合预期的统计结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:05