user1087310 - 9 months ago 203

Python Question

I have two pandas dataframes:

`from pandas import DataFrame`

df1 = DataFrame({'col1':[1,2],'col2':[3,4]})

df2 = DataFrame({'col3':[5,6]})

What is the best practice to get their cartesian product (of course without writing it explicitly like me)?

`#df1, df2 cartesian product`

df_cartesian = DataFrame({'col1':[1,2,1,2],'col2':[3,4,3,4],'col3':[5,5,6,6]})

Answer Source

If you have a key that is repeated for each row, then you can produce a cartesian product using merge (like you would in SQL).

```
from pandas import DataFrame, merge
df1 = DataFrame({'key':[1,1], 'col1':[1,2],'col2':[3,4]})
df2 = DataFrame({'key':[1,1], 'col3':[5,6]})
merge(df1, df2,on='key')[['col1', 'col2', 'col3']]
```

See here for the documentation: http://pandas.pydata.org/pandas-docs/stable/merging.html#brief-primer-on-merge-methods-relational-algebra