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

如何用Pandas按分组透视长分类数据并对分类变量dummy编码

Pandas 客户季度购买行为哑变量编码解决方案

你之前的代码存在两处核心问题:一是get_dummies是pandas的顶层函数,不能直接作为Series的实例方法调用;二是缺少分组聚合的步骤,无法将同一个客户同季度的多条购买记录合并为一行的1/0标记。

实现方法

方法1:pd.get_dummies + 分组聚合

  • 先生成商品的哑变量,再按客户和季度分组取最大值,存在购买记录就标记为1,无则为0
import pandas as pd

# 生成purchase_item对应的哑变量列
dummy_data = pd.get_dummies(data, columns=['purchase_item'], prefix='', prefix_sep='')
# 按客户、季度分组,对哑变量列取最大值实现去重标记
result = dummy_data.groupby(['cust_id', 'purchase_qtr'], as_index=False).max()

方法2:pivot_table 直接透视生成宽表

  • 无需单独调用哑变量函数,利用透视表的聚合逻辑直接生成结果,代码更简洁
result = pd.pivot_table(
    data,
    index=['cust_id', 'purchase_qtr'],
    columns='purchase_item',
    aggfunc=lambda x: 1, # 只要有购买记录就赋值为1
    fill_value=0 # 无购买记录的组合赋值为0
).reset_index().rename_axis(columns=None) # 清除透视生成的列索引名称,保持格式整洁

两种方法均支持处理同一客户同季度多次购买同一商品的场景,不会出现值大于1的异常结果。如果需要保留其他原数据字段,可以在分组/透视参数中补充对应列的配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:45:03