大 pandas 交叉联接没有共同点 [英] pandas cross join no columns in common
本文介绍了大 pandas 交叉联接没有共同点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何使用熊猫对两个没有共同列的数据框执行完全外部联接 交叉联接?
How would you perform a full outer join a cross join of two dataframes with no columns in common using pandas?
在MySQL中,您可以简单地执行以下操作:
In MySQL, you can simply do:
SELECT *
FROM table_1
[CROSS] JOIN table_2;
但是在大熊猫中,可以这样做:
But in pandas, doing:
df_1.merge(df_2, how='outer')
出现错误:
MergeError: No common columns to perform merge on
到目前为止,我最好的解决方案是使用sqlite
:
import sqlalchemy as sa
engine = sa.create_engine('sqlite:///tmp.db')
df_1.to_sql('df_1', engine)
df_2.to_sql('df_2', engine)
df = pd.read_sql_query('SELECT * FROM df_1 JOIN df_2', engine)
推荐答案
IIUC,您需要 merge
,其中两个DataFrames
的临时列tmp
:
IIUC you need merge
with temporary columns tmp
of both DataFrames
:
import pandas as pd
df1 = pd.DataFrame({'fld1': ['x', 'y'],
'fld2': ['a', 'b1']})
df2 = pd.DataFrame({'fld3': ['y', 'x', 'y'],
'fld4': ['a', 'b1', 'c2']})
print df1
fld1 fld2
0 x a
1 y b1
print df2
fld3 fld4
0 y a
1 x b1
2 y c2
df1['tmp'] = 1
df2['tmp'] = 1
df = pd.merge(df1, df2, on=['tmp'])
df = df.drop('tmp', axis=1)
print df
fld1 fld2 fld3 fld4
0 x a y a
1 x a x b1
2 x a y c2
3 y b1 y a
4 y b1 x b1
5 y b1 y c2
这篇关于大 pandas 交叉联接没有共同点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文