加入两个数据框以获得笛卡尔积[重复]
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
【讨论】:
以上是关于加入两个数据框以获得笛卡尔积[重复]的主要内容,如果未能解决你的问题,请参考以下文章