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

Python中如何将商品购买组合元组列表转为Pandas DataFrame

解法实现

方法1:已有所有二元组总列表时直接创建(最简单)

如果你已经把每行生成的二元组都汇总到了一个总列表中,直接用列表创建DataFrame即可:

import pandas as pd

# 示例总列表,对应你生成的所有二元组集合
all_pairs = [('12', '223'), ('54', '554'), ('54', '12'), ('554', '12'), ('12', '1112'), ('12', '11'), ('12', '2353'), ('12', '445'), ('1112', '11'), ('1112', '2353'), ('1112', '445'), ('11', '2353'), ('11', '445'), ('2353', '445'), ('54', '12')]

# 直接生成目标格式的DataFrame
result_df = pd.DataFrame(all_pairs, columns=['product_one', 'product_two'])

方法2:组合结果存储在原DataFrame列中时处理

如果你是对原DataFrame用apply生成了存储每行组合的列,用explode炸开后拆分即可:

from itertools import combinations

# 示例:你已经通过原字段生成了组合列
df['product_list'] = df['product_ids'].apply(lambda x: list(set([i.strip() for i in x.split(',')])))
df['pairs'] = df['product_list'].apply(lambda x: list(combinations(x, 2)))

# 炸开组合列,每个二元组单独成一行
exploded_df = df.explode('pairs', ignore_index=True)
# 拆分二元组为两列
result_df = pd.DataFrame(exploded_df['pairs'].tolist(), columns=['product_one', 'product_two'])

可选补充逻辑

  • 若需要全局去重(不同客户生成的相同配对只留一条),可追加代码:result_df = result_df.drop_duplicates(ignore_index=True)
  • 若需要保证两列商品ID大小顺序(比如数值小的在前),可追加代码:
result_df[['product_one', 'product_two']] = result_df[['product_one', 'product_two']].apply(lambda x: sorted(x, key=int), axis=1, result_type='expand')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:48:03