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

Pandas分组聚合:如何将Registered分组转为列而非行?

问题:将分组聚合结果按注册状态转为列展示

我有一份数据集,每周每条记录对应一个用户,包含该用户是否注册(Registered)以及相关指标值(Metric Value):

cols = ["Worker ID", "Registered", "Week Ending", "Metric Value"]
rows = [
    ['A', True, '2022-08-06', 2],
    ['B', False, '2022-08-06', 3],
    ['C', False, '2022-08-06', 4],
    ['A', True, '2022-08-13', 3],
    ['B', False, '2022-08-13', 2],
    ['C', True, '2022-08-13', 5]
]

df = pd.DataFrame(columns=cols, data = rows)

常规按Week Ending和Registered分组聚合的写法如下:

df.groupby(["Week Ending", "Registered"]).agg({'Worker ID': pd.Series.nunique, "Metric Value": sum})

但该写法会将分组结果以行形式呈现,我希望将Registered的分组转为列形式,得到如下格式的结果:

周末日期已注册Worker ID数量未注册Worker ID数量已注册指标值总和未注册指标值总和
2022-08-061227
2022-08-132182

请问如何实现这一需求?


解决方案

可以通过两种方式实现需求,以下是具体代码:

方法1:使用pivot_table一步完成

直接通过透视表指定行、列、聚合字段和规则,再调整列名:

import pandas as pd

# 生成透视表
result = pd.pivot_table(
    df,
    index='Week Ending',
    columns='Registered',
    values=['Worker ID', 'Metric Value'],
    aggfunc={'Worker ID': pd.Series.nunique, 'Metric Value': sum}
)

# 重命名列名并重置索引
result.columns = [
    '已注册Worker ID数量' if col == (True, 'Worker ID') else 
    '未注册Worker ID数量' if col == (False, 'Worker ID') else
    '已注册指标值总和' if col == (True, 'Metric Value') else
    '未注册指标值总和'
    for col in result.columns
]
result = result.reset_index().rename(columns={'Week Ending': '周末日期'})

方法2:分组聚合后unstack转换列

先完成分组聚合,再将Registered层级转为列,最后调整列名:

import pandas as pd

# 先执行分组聚合
agg_df = df.groupby(["Week Ending", "Registered"]).agg(
    worker_count=('Worker ID', pd.Series.nunique),
    metric_sum=('Metric Value', sum)
)

# 将Registered层级转为列
unstacked = agg_df.unstack('Registered')

# 合并列层级并修改为目标名称
unstacked.columns = [
    f"{'已注册' if col[1] else '未注册'}{'Worker ID数量' if col[0] == 'worker_count' else '指标值总和'}"
    for col in unstacked.columns
]

# 重置索引并重命名日期列
result = unstacked.reset_index().rename(columns={'Week Ending': '周末日期'})

两种方法最终都会输出你需要的表格格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:25:16