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

Python中将超市交易数据按交易号分组为索引列的方法求助

合并超市交易数据实现单交易行购物篮格式

我已经将名为“grocery store transactions”的CSV文件加载到Python中,代码如下:

txns = pd.read_csv('transactions.csv')
txns.head(10)

当前超市交易数据中,涉及多件商品的交易分散在多行。我的目标是将交易号列设为索引列,让每行代表一个唯一交易号,并汇总该交易下的所有关联商品,以开展购物篮分析,现寻求实现方法。


解决方案

假设你的交易号列名为transaction_id,商品名列名为product_name(替换成你实际的列名即可),用Pandas的分组聚合就能快速实现需求:

1. 把商品汇总为列表(适合后续购物篮分析工具)

这种格式可以直接对接mlxtend等库的关联规则算法:

# 按交易号分组,将同交易的商品合并成列表
basket = txns.groupby('transaction_id')['product_name'].agg(list).reset_index()

# 将交易号设为索引
basket.set_index('transaction_id', inplace=True)

2. 用分隔符拼接商品为字符串(直观文本格式)

如果需要更易读的文本展示,可用逗号或其他分隔符拼接:

# 按交易号分组,用逗号分隔商品
basket = txns.groupby('transaction_id')['product_name'].agg(', '.join).reset_index()

# 设置交易号为索引
basket.set_index('transaction_id', inplace=True)

3. 验证处理结果

执行完后用head()检查数据格式:

basket.head()

额外提示

  • 先确认transaction_id是唯一的交易标识,避免分组错误
  • 若数据有缺失值,先清理:txns = txns.dropna(subset=['transaction_id', 'product_name'])
  • 用列表格式的数据做购物篮分析时,可通过mlxtend.preprocessing.TransactionEncoder转换为One-Hot编码后,再用Apriori算法挖掘关联规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:25:19