In Pandas, there are parameters to perform left, right, inner or outer merge and join on two DataFrames or Series. However there’s no possibility as of now to perform a cross join to merge or join two methods using how="cross"
parameter.
Cross Join :
Example 1:
The above example is proven as follows
# importing pandas module import pandas as pd # Define a dictionary with column A data1 = { 'A' : [ 1 , 2 ]} # Define another dictionary with column B data2 = { 'B' : [ 'a' , 'b' , 'c' ]} # Convert the dictionary into DataFrame df = pd.DataFrame(data1, index = [ 0 , 1 ]) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2, index = [ 2 , 3 , 4 ]) # Now to perform cross join, we will create # a key column in both the DataFrames to # merge on that key. df[ 'key' ] = 1 df1[ 'key' ] = 1 # to obtain the cross join we will merge # on the key and drop it. result = pd.merge(df, df1, on = 'key' ).drop( "key" , 1 ) result |
DataFrame 1:
DataFrame 2 :
Output :
Example 2:
Cross join on two DataFrames for user and product.
# importing pandas module import pandas as pd # Define a dictionary containing user ID data1 = { 'Name' : [ "Rebecca" , "Maryam" , "Anita" ], 'UserID' : [ 1 , 2 , 3 ]} # Define a dictionary containing product ID data2 = { 'ProductID' : [ 'P1' , 'P2' , 'P3' , 'P4' ]} # Convert the dictionary into DataFrame df = pd.DataFrame(data1, index = [ 0 , 1 , 2 ]) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2, index = [ 2 , 3 , 6 , 7 ]) # Now to perform cross join, we will create # a key column in both the DataFrames to # merge on that key. df[ 'key' ] = 1 df1[ 'key' ] = 1 # to obtain the cross join we will merge on # the key and drop it. result = pd.merge(df, df1, on = 'key' ).drop( "key" , 1 ) result |
DataFrame 1:
DataFrame 2 :
Output :
Example 3:
# importing pandas module import pandas as pd # Define a dictionary with two columns data1 = { 'col 1' : [ 0 , 1 ], 'col 2' : [ 2 , 3 ]} # Define another dictionary data2 = { 'col 3' : [ 5 , 6 ], 'col 4' : [ 7 , 8 ]} # Convert the dictionary into DataFrame df = pd.DataFrame(data1, index = [ 0 , 1 ]) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2, index = [ 2 , 3 ]) # Now to perform cross join, we will create # a key column in both the DataFrames to # merge on that key. df[ 'key' ] = 1 df1[ 'key' ] = 1 # to obtain the cross join we will merge on # the key and drop it. result = pd.merge(df, df1, on = 'key' ).drop( "key" , 1 ) result |
DataFrame 1:
DataFrame 2 :
Output :