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

Pandas多列透视表实现失败求助:按pcd分组聚合需求

正确实现方案

原代码的问题

  1. 字典语法错误:aggfunc里的键值对用了=,Python字典需用:
  2. 聚合函数错误:avg不是Pandas支持的聚合函数,需替换为'mean'或np.mean
  3. 核心逻辑缺失:未先将分类字段INCOME、Education转为哑变量,直接用pivot_table无法生成分类对应的独立列
  4. 索引设置错误:需求是以pcd为唯一索引,原代码错误将age1to_20加入索引

完整实现步骤

  1. 生成哑变量:用pd.get_dummies将INCOME、Education的每个分类转为独立的0/1列
  2. 分组聚合:按pcd分组,对哑变量列和age1to_20求和,对TG求平均值
  3. 缺失值填充:用fillna(0)处理可能的空值

代码示例

import pandas as pd
import numpy as np

# 1. 转换分类字段为哑变量
df_dummies = pd.get_dummies(df, columns=['INCOME', 'Education'], drop_first=False)

# 2. 构建聚合规则字典
agg_rules = {}
# 对所有哑变量列设置求和
for col in df_dummies.columns:
    if col.startswith('INCOME_') or col.startswith('Education_'):
        agg_rules[col] = 'sum'
# 设置其他字段的聚合方式
agg_rules['age1to_20'] = 'sum'
agg_rules['TG'] = 'mean'

# 3. 分组聚合并填充缺失值
final_result = df_dummies.groupby('pcd').agg(agg_rules).fillna(0)

代码说明

  • pd.get_dummies(..., drop_first=False):保留所有分类的哑变量列(若需避免多重共线性可设为True)
  • 聚合规则字典:明确指定每个字段的聚合逻辑,哑变量求和得到每个分类在对应pcd下的累计数量
  • groupby('pcd').agg(...):严格按pcd分组,满足需求的索引要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:55:22