Dans les versions récentes de Pandas (>= 1.2), cette fonction est intégrée dans le module merge
pour que vous puissiez le faire :
from pandas import DataFrame
df1 = DataFrame({'col1':[1,2],'col2':[3,4]})
df2 = DataFrame({'col3':[5,6]})
df1.merge(df2, how='cross')
Ceci est équivalent à la réponse précédente de pandas < 1.2 mais est plus facile à lire.
Pour pandas < 1.2 :
Si vous avez une clé qui est répétée pour chaque ligne, vous pouvez alors produire un produit cartésien en utilisant la fusion (comme vous le feriez en 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']]
Sortie :
col1 col2 col3
0 1 3 5
1 1 3 6
2 2 4 5
3 2 4 6
Voir ici pour la documentation : http://pandas.pydata.org/pandas-docs/stable/merging.html