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

如何在Power Query中基于订单次数与产品类别创建哑变量?

高效生成订单次数与产品类别组合哑变量的方法

针对大型客户购买数据集,可通过Python的pandas库实现自动化生成订单次数与产品类别的组合哑变量,步骤如下:

步骤1:标记客户订单次数

首先为每个客户的订单按时间排序,标记首次、二次等购买次数:

import pandas as pd

# 确保订单日期为datetime类型(若原始数据是字符串格式)
data['order_date'] = pd.to_datetime(data['order_date'])

# 按客户分组,按订单日期排序,生成订单次数(1=首次购买,2=二次购买...)
data['order_rank'] = data.groupby('customer_id')['order_date'].rank(method='first').astype(int)
# 可选:转换为更直观的文本标签,比如"1次购买"、"2次购买"
data['order_rank_label'] = data['order_rank'].apply(lambda x: f"{x}次购买")

步骤2:拆分订单内的多产品类别

将同一订单中的多个产品类别拆分为单独行,方便后续生成组合特征:

# 拆分逗号分隔的产品类别字符串(若原始数据是列表格式,直接跳过split步骤)
data_exploded = data.assign(product_category=data['product_categories'].str.split(',')).explode('product_category')

步骤3:生成订单次数-产品类别组合特征

创建组合列,将订单次数标签与产品类别拼接:

data_exploded['order_category_comb'] = data_exploded['order_rank_label'] + '_' + data_exploded['product_category']

步骤4:生成组合哑变量

利用pd.get_dummies快速生成哑变量,并按订单ID聚合(同一订单内只要包含对应类别,哑变量标记为1):

# 生成哑变量
dummies = pd.get_dummies(data_exploded['order_category_comb'], prefix='', prefix_sep='')

# 按订单ID聚合,取最大值确保同一订单的多类别都被标记
dummies_agg = dummies.groupby(data_exploded['order_id']).max()

# 合并回原数据集
final_data = data.merge(dummies_agg, on='order_id', how='left')

大型数据集优化建议

  • 若数据集规模极大,可使用dask.dataframe替代pandas,支持并行计算提升处理速度
  • 提前清理数据:确保customer_id、order_id无缺失值,product_categories格式统一
  • 若订单次数需要随新数据动态更新,仅需重新运行上述代码即可,无需手动调整规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 08:10:22