如何将长表转换为指定格式宽表以适配Apriori算法使用需求
长表转适配Apriori的宽表实现方案
使用Python pandas库即可快速完成转换,核心逻辑是先对同id下的商品生成组内序号,再做透视表转换:
实现代码
import pandas as pd # 1. 读入你的长表数据,此处为样例构造,你可替换为pd.read_csv等读取自己数据的代码 df = pd.DataFrame({ 'id': [1, 2, 1, 3, 2, 6, 6], 'item': ['tea', 'butter', 'milk', 'apples', 'milk', 'wine', 'tea'] }) # 2. 给同一id下的商品生成自增序号,作为宽表的列名 df['col_idx'] = df.groupby('id').cumcount() + 1 # 3. 透视生成目标宽表 wide_df = df.pivot(index='id', columns='col_idx', values='item').reset_index() # 可选:如果后续Apriori处理需要把空值替换为空字符串,打开下行注释即可 # wide_df = wide_df.fillna('')
后续适配Apriori处理
如果需要直接生成可输入Apriori算法的购物篮列表,在上述代码后补充以下代码即可:
# 生成不含id、过滤空值的购物篮二维列表 baskets = wide_df.drop(columns=['id']).apply(lambda row: row.dropna().tolist(), axis=1).tolist()
输出的baskets可直接传入apyori、mlxtend等库的Apriori接口使用。
内容的提问来源于stack exchange,提问作者David Jopo
相关产品推荐
相关产品推荐

