0

How to join two dataframes and get the cartesian product of all rows in both dataframes.

df1:

   values
0       4
1       5
2       6

df2:

   values
0       7
1       8
2       9

Expected Output:

   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
Mykola Zotko
  • 15,583
  • 3
  • 71
  • 73
AB14
  • 397
  • 2
  • 13

2 Answers2

3

You can use a dummy column to merge on:

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

Output:

   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
Mykola Zotko
  • 15,583
  • 3
  • 71
  • 73
0

Try this:

pd.merge(df1, df2, how = 'outer', left_on = 'value1', right_on = 'value2')
Mohit Sharma
  • 590
  • 3
  • 10