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

如何基于两个列表生成包含所有组合的DataFrame?

生成两个列表所有组合的DataFrame最优方法

针对你需要生成两个列表所有可能组合(笛卡尔积)的DataFrame需求,以下是几种高效的实现方案,适合大规模数据场景:

方法1:Pandas原生交叉合并(推荐)

Pandas 1.2.0及以上版本支持how='cross'参数,直接通过合并两个单列表DataFrame生成笛卡尔积,底层做了优化,处理大数量级数据效率很高。

import pandas as pd

list1 = [1,2,3]
list2 = [10,11,12]

# 生成笛卡尔积DataFrame
df = pd.DataFrame({'list1': list1}).merge(pd.DataFrame({'list2': list2}), how='cross')

方法2:利用itertools.product生成组合

itertools是Python标准库,product方法专门用于生成多个可迭代对象的笛卡尔积,返回迭代器,内存占用低,适合超大规模列表:

import pandas as pd
from itertools import product

list1 = [1,2,3]
list2 = [10,11,12]

# 生成所有组合的迭代器,再转为DataFrame
combinations = product(list1, list2)
df = pd.DataFrame(combinations, columns=['list1', 'list2'])

方法3:MultiIndex构建法

通过Pandas的多层索引生成笛卡尔积,再转为普通DataFrame,代码简洁直观:

import pandas as pd

list1 = [1,2,3]
list2 = [10,11,12]

# 从笛卡尔积生成多层索引,再转为无索引的DataFrame
df = pd.MultiIndex.from_product([list1, list2], names=['list1', 'list2']).to_frame(index=False)

注意

绝对不推荐手动嵌套循环生成组合,这种方法时间复杂度高,处理大规模数据时性能极差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:54:23