加入两个数据框以获得笛卡尔积[重复]

Posted

技术标签:

【中文标题】加入两个数据框以获得笛卡尔积[重复]【英文标题】:Join two dataframes to get cartesian product [duplicate] 【发布时间】:2020-06-01 06:50:48 【问题描述】:

如何连接两个数据帧并获得两个数据帧中所有行的笛卡尔积。

df1:

   values
0       4
1       5
2       6

df2:

   values
0       7
1       8
2       9

预期输出:

   values_x  values_y
0         4         7
1         4         8
2         4         9
3         5         7
4         5         8
5         5         9
6         6         7
7         6         8
8         6         9

【问题讨论】:

不,不回答问题 这叫cross join,检查dupe。 【参考方案1】:

试试这个:

pd.merge(df1, df2, how = 'outer', left_on = 'value1', right_on = 'value2')

【讨论】:

KeyError: 'value2' 我试过这个,但在某些输出中你会得到空值 那么您可能在一个或两个数据框中都有空值。你能检查一下 info() 功能吗?【参考方案2】:

您可以使用虚拟列进行合并:

df1.assign(dummy=1).merge(df2.assign(dummy=1), on='dummy', how='outer').drop('dummy', axis=1)

输出:

   values_x  values_y
0         4         7
1         4         8
2         4         9
3         5         7
4         5         8
5         5         9
6         6         7
7         6         8
8         6         9

【讨论】:

以上是关于加入两个数据框以获得笛卡尔积[重复]的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:

JS使用循环获得不定维度笛卡尔积

数据库笛卡尔积

SQL 不等式加入返回的笛卡尔积

Pandas 等效于 SQL CROSS JOIN(笛卡尔积)[重复]

如何在 PostgreSQL 中获得随机笛卡尔积?