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

pandas按指定列groupby统计分组总行数及POS值个数的方法

实现方案

你可以选择以下两种方式实现需求,推荐第一种一次性聚合的写法,效率更高:

方法1:分组时直接聚合两个指标

直接在groupby阶段同时统计每组总数据量和POS的数量,无需后续拼接操作:

dfB = dfA.groupby(["name", "field", "country"], dropna=False).agg(
    No_of_data=("action", "size"),
    No_of_POS=("action", lambda x: (x == "POS").sum())
).reset_index()

方法2:单独统计POS数量后合并到已有的dfB

如果已经生成了dfB不想重新执行分组逻辑,可以先统计每组POS的数量,再左连接合并到dfB,无POS的组会自动补0:

# 统计每组POS数量
pos_count = dfA[dfA["action"] == "POS"].groupby(["name", "field", "country"], dropna=False).size().reset_index(name="No_of_POS")
# 合并到dfB,缺失值补0并转换为整数类型
dfB = dfB.merge(pos_count, on=["name", "field", "country"], how="left").fillna({"No_of_POS": 0})
dfB["No_of_POS"] = dfB["No_of_POS"].astype(int)

最终得到的dfB结构如下:

namefieldcountryNo_of_dataNo_of_POS
SamelecUSA32
TommymechCanada20
BrianITSpain31

内容的提问来源于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.03 21:36:01