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

如何基于两个多索引列Pandas DataFrame生成全组合新表

优化后问题表述

给定两个行数相等、且均带有多级列索引的Pandas DataFrame,需按如下规则生成两个新的结果表:

  1. 左结果表:原左表的每一列按右表的总列数重复,保留原列的多级索引结构,最终列数等于两原表列数的乘积
  2. 右结果表:原右表的完整列集合按左表的总列数重复,保留原列的多级索引结构,最终列数和左结果表一致

示例参考

输入构造代码

import pandas as pd
left = pd.DataFrame(([1,0,1], [1,0,0],[1,0,1],), columns=pd.MultiIndex.from_tuples([('A', 'B'), ('A', 'C' ), ('D','D'),]))
right = pd.DataFrame(([8,9], [8,9],[8,9],), columns=pd.MultiIndex.from_tuples([('S', 'T'), ('Y', 'Z'),]))

原left表样例

A  A  D
   B  C  D
0  1  0  1
1  1  0  0
2  1  0  1

原right表样例

S  Y
   T  Z
0  8  9
1  8  9
2  8  9

预期输出

left_result

A  A  A  A  D  D
   B  B  C  C  D  D
0  1  1  0  0  1  1
1  1  1  0  0  0  0
2  1  1  0  0  1  1

right_result

S  Y  S  Y  S  Y
   T  Z  T  Z  T  Z
0  8  9  8  9  8  9
1  8  9  8  9  8  9
2  8  9  8  9  8  9

实现代码
# 获取两个原表的列数
n_left_col = left.shape[1]
n_right_col = right.shape[1]

# 生成左结果表:每列重复右表列数次
left_result = left.repeat(n_right_col, axis=1)
# 生成右结果表:完整列集合重复左表列数次
right_result = pd.concat([right]*n_left_col, axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:54:07