Pandas 等效于 SQL CROSS JOIN(笛卡尔积)[重复]
Posted
技术标签:
【中文标题】Pandas 等效于 SQL CROSS JOIN(笛卡尔积)[重复]【英文标题】:Pandas Equivalent of SQL CROSS JOIN (Cartesian Product) [duplicate] 【发布时间】:2018-06-23 14:48:31 【问题描述】:假设我有两张桌子:
表1:
col1 col2
0 1
2 3
表2:
col3 col4
5 6
7 8
在 SQL 中,如果我做了以下语句:
Select *
From Table1, Table2;
我希望得到一张包含两个表中所有组合的表:
col1 col2 col3 col4
0 1 5 6
0 1 7 8
2 3 5 6
2 3 7 8
有没有办法对 pandas 中的两个数据框做同样的事情?
【问题讨论】:
我实际上更喜欢这里接受的解决方案而不是上面链接的解决方案(因为它假设“你有一个在两个数据框中重复的每一行的键”)。 【参考方案1】:一个标准的习惯用法是在一个虚拟列上使用merge
。
df1.assign(foo=1).merge(df2.assign(foo=1)).drop('foo', 1)
col1 col2 col3 col4
0 0 1 5 6
1 0 1 7 8
2 2 3 5 6
3 2 3 7 8
【讨论】:
在熊猫版本 0.23.4 中,还必须提供on='foo'
参数才能合并。喜欢df1.assign(foo=1).merge(df2.assign(foo=1), on='foo').drop('foo', 1)
。
@samutamm 仅当跨 DataFrame 的非键列共享相同名称时才需要。
好的,谢谢@cs95以上是关于Pandas 等效于 SQL CROSS JOIN(笛卡尔积)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
sql JOINs - JOIN,INNER JOIN,LEFT JOIN,RIGHT JOIN,CROSS JOIN