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

使用pandas.groupby后列重命名及统计子项数量转宽表的问题

问题解决方案

1. 解决分组计数后的列重名问题

你当前的写法是对单列ChildName做count运算,得到的Series默认名称和原列名一致,转DataFrame后就会和索引层级的ChildName重名,两种修正方案:

  • 方案A:分组计数后用reset_index直接指定计数列名,同时把多级索引转为普通列
by_parent = df.groupby(["ParentName", "ChildName"])["ChildName"].count().reset_index(name="child_count")
  • 方案B:聚合时直接通过agg指定列名,可读性更强
by_parent = df.groupby(["ParentName", "ChildName"], as_index=False).agg(
    child_count = ("ChildName", "count")
)

2. 生成要求格式的宽表

两种实现路径可选:

路径1:基于上述聚合结果做透视

调用pivot方法完成行转列,再通过add_prefix给列名加指定前缀,缺失计数补0即可:

wide_df = by_parent.pivot(
    index="ParentName",
    columns="ChildName",
    values="child_count"
).add_prefix("child_").reset_index().fillna(0)

路径2:一步生成最终宽表

无需提前做分组聚合,直接用pd.crosstab统计频次即可,代码更简洁:

wide_df = pd.crosstab(df["ParentName"], df["ChildName"]).add_prefix("child_").reset_index()

该方法默认就会统计每个ParentName下各ChildName的出现次数,和需求完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:07