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 :