Pandas Two Dataframe Cross Join [Duplicate]

I can't find anything about cross join include the merge/join or some other. I need deal with two dataframe using {my function} as myfunc . the equivalent of :

{
    for itemA in df1.iterrows():
           for itemB in df2.iterrows():
                       t["A"] = myfunc(itemA[1]["A"],itemB[1]["A"])
 }      

the equivalent of :

{
 select myfunc(df1.A,df2.A),df1.A,df2.A from df1,df2;
}

but I need more efficient solution: if used apply i will be how to implement them thx;^^

1

Create a common 'key' to cross join the two:

df1['key'] = 0
df2['key'] = 0

df1.merge(df2, on='key', how='outer')
5

For the cross product, see this question.

Essentially, you have to do a normal merge but give every row the same key to join on, so that every row is joined to each other across the frames.

You can then add a column to the new frame by applying your function:

new_df = pd.merge(df1, df2, on=key)
new_df.new_col = new_df.apply(lambda row: myfunc(row['A_x'], row['A_y']), axis=1)

axis=1 forces .apply to work across the rows. 'A_x' and 'A_y' will be the default column names in the resulting frame if the merged frames share a column like in your example above.

Sarah Jenkins

Sarah Jenkins

Senior Technology Editor & AI Specialist

Sarah Jenkins is a veteran tech journalist with over 12 years of experience covering artificial intelligence, mobile innovations, and digital ethics. Her insights have appeared in leading technology publications worldwide.

Share this article
Twitter Facebook Pinterest