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

如何基于现有DataFrame生成所有元素排列组合的新DataFrame

实现方案

直接用pandas的笛卡尔积就能生成你要的所有有序两两组合,不需要手写循环,运行效率更高。
首先确认原始数据:假设你存储姓名的列名为name,原始DataFrame构造参考如下:

import pandas as pd

df = pd.DataFrame({
    'name': ['John', 'Kelly', 'Jay', 'Max', 'Kert']
})

根据你使用的pandas版本,选择对应写法即可:

  • pandas 1.2.0及以上版本,直接使用原生交叉连接(笛卡尔积)语法:
# 交叉连接生成所有有序两两配对
pair_df = df.merge(df, how='cross')
# 拼接为下划线连接的目标格式
res = pd.DataFrame({
    'value': pair_df['name_x'] + '_' + pair_df['name_y']
})
  • pandas版本低于1.2.0(不支持how='cross'参数),通过添加临时公共键实现相同的笛卡尔积效果:
# 添加临时公共连接键
df['tmp_key'] = 1
pair_df = df.merge(df, on='tmp_key').drop(columns='tmp_key')
# 拼接为目标格式
res = pd.DataFrame({
    'value': pair_df['name_x'] + '_' + pair_df['name_y']
})

最终生成的res就是符合要求的新DataFrame,总计25行数据,覆盖从John_John到Kert_Kert的全部有序组合,和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:15:32