pandas pivot_table按行列分组统计计数出现ValueError如何解决
报错原因
你遇到的ValueError: Grouper for 'Age Grp' not 1-dimensional错误,核心是你同时将Age Grp设为了行索引和统计值字段,参数组合触发了维度匹配冲突。另外你的需求是统计不同Age Grp在对应月份的出现次数,不需要用pd.Series.nunique做唯一值统计,用常规计数逻辑即可。
实现方案
方案1:调整pivot_table参数
修改参数即可得到预期结果:
pivot1 = pd.pivot_table(df, index="Age Grp", columns="Mth", aggfunc="size", fill_value=0)
参数说明:
- 移除
values参数,用aggfunc="size"直接统计分组后的行数,就是你需要的计数结果 fill_value=0会把不存在的分组组合填充为0,匹配你的输出要求
方案2:更简便的crosstab实现
针对这种交叉计数场景,用crosstab代码更简洁,默认输出就符合要求:
pivot1 = pd.crosstab(index=df["Age Grp"], columns=df["Mth"])
两种方案跑示例数据得到的结果完全和你期望的一致:
| Age Grp | 1 | 5 | 10 |
|---|---|---|---|
| 0-4 | 1 | 0 | 1 |
| 5 -9 | 0 | 1 | 0 |
| 10-14 | 0 | 1 | 0 |
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

