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

pandas中按字符串列聚合DataFrame 统计name与value组合下country列计数

问题原因

  • 现有代码不符合预期主要有两个原因:
    1. pandas groupby 默认会丢弃分组键里的NaN/缺失值,所以country列为空的分组直接被排除,不会进入统计
    2. 用agg({"country": "count"})的方式聚合后,结果会自带MultiIndex,且列名和结构和预期输出不一致

正确实现代码

只需要给groupby添加dropna=False参数保留空值分组,用size()统计每组的行数,再重置索引重命名计数列即可:

grouped = dfB.groupby(["name", "value", "country"], dropna=False).size().reset_index(name="count")

如果country列的空值是空白字符串而非pandas默认的NaN,无需额外处理,上述代码会自动将空白字符串当做独立类别统计,最终输出的结构和你给出的预期结果完全一致。

如果你使用的pandas版本低于1.1.0(不支持dropna参数),可以先将country列的缺失值替换为占位符再分组,最后再替换回空值即可:

dfB['country'] = dfB['country'].fillna('temp_placeholder')
grouped = dfB.groupby(["name", "value", "country"]).size().reset_index(name="count")
grouped['country'] = grouped['country'].replace('temp_placeholder', '')

内容的提问来源于stack exchange,提问作者Dawn.Sahil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:00:00