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

如何用Python将按UUID分组的事件统计DataFrame转换为宽表

Python实现长表转宽表(UUID分组,事件转独立列)

直接用Pandas的pivot_table或pivot方法就能快速实现需求,以下是具体代码:

1. 导入依赖并构造示例数据

import pandas as pd

# 模拟你提供的原始DataFrame
data = {
    'UUid': ['B32E7AA5B11A40AE', 'B32E7AA5B11A40AE', 'B32E7AA5B11A40AE',
             '2AEFB3AEA64140BE', '2AEFB3AEA64140BE',
             'A0DFAACDEB4D40C1', 'A0DFAACDEB4D40C1', 'A0DFAACDEB4D40C1'],
    'Event': ['page XY opened', 'shopcart filled', 'purchase made',
              'page XY opened', 'shopcart filled',
              'page XY opened', 'shopcart filled', 'purchase made'],
    'sum': [121, 92, 23, 221, 21, 1345, 1323, 1321]
}
df = pd.DataFrame(data)

2. 核心转换代码(推荐用pivot_table)

# 转换为宽表,缺失事件自动填充0
wide_df = df.pivot_table(
    index='UUid',       # 按UUid分组
    columns='Event',    # 将Event的每个取值转为独立列
    values='sum',       # 填充到列中的值
    fill_value=0,       # 缺失事件的填充值
    aggfunc='sum'       # 聚合方式,因原始数据已统计,sum/first均可
).reset_index()

# 移除列名的层级标签,让格式更贴合目标表
wide_df.columns.name = None

3. 可选:用pivot实现(需确保UUid+Event无重复)

如果你的原始数据中每个UUid和Event的组合是唯一的,也可以用更简洁的pivot:

wide_df = df.pivot(index='UUid', columns='Event', values='sum').fillna(0).reset_index()
wide_df.columns.name = None

输出结果

运行后得到的wide_df就是你需要的宽表格式:

UUidpage XY openedshopcart filledpurchase made
2AEFB3AEA64140BE221210
A0DFAACDEB4D40C1134513231321
B32E7AA5B11A40AE1219223

内容的提问来源于stack exchange,提问作者Beginner in the house

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:48:22