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

如何无循环实现两个列表的笛卡尔积转为DataFrame?

无需for循环生成笛卡尔积DataFrame的方案

当然没问题!完全不需要写for循环就能轻松生成你想要的DataFrame,这里给你两种简洁高效的实现方式:

方案1:借助itertools.product生成笛卡尔积

itertools.product是Python标准库中专门用来生成多个可迭代对象笛卡尔积的工具,用它配合Pandas可以一行搞定:

import pandas as pd
from itertools import product

names_list = ['A', 'B', 'C', 'D', 'E']
num_list = list(range(1,21))

# 直接生成两个列表的笛卡尔积,再转为指定列名的DataFrame
df = pd.DataFrame(product(names_list, num_list), columns=['Name', 'Number'])

说明:product(names_list, num_list)会按你需要的顺序(先遍历所有名称,每个名称对应所有数字)生成所有组合,完全不需要手动循环,而且是惰性迭代器,内存效率很高。

方案2:纯Pandas内置方法实现(无需额外导入库)

如果你更倾向于只用Pandas的话,可以用merge的cross连接类型,这是Pandas 1.2.0及以上版本支持的特性,专门用来生成笛卡尔积:

import pandas as pd

names_list = ['A', 'B', 'C', 'D', 'E']
num_list = list(range(1,21))

# 先把两个列表转为单独的DataFrame
df_names = pd.DataFrame({'Name': names_list})
df_nums = pd.DataFrame({'Number': num_list})

# 执行交叉连接生成笛卡尔积
df = df_names.merge(df_nums, how='cross')

说明:how='cross'会让两个DataFrame的所有行进行组合,正好符合你的需求,全程没有手动循环,代码也更贴合Pandas的使用习惯。

两种方法都能完美生成你想要的结果,而且效率远高于手动写for循环,尤其是当列表规模较大时优势更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:20:51