Я не могу найти дубликат.Но IIUC, вы пытаетесь сделать что-то вроде crosstab
на двух фреймах данных:
df = pd.DataFrame({'a': list(range(3)), 'b': list(range(3))})
df2 = pd.DataFrame([[1,2],[3,4]], columns=('c','d'))
pd.concat((df2.loc[np.tile(df2.index, len(df))].reset_index(drop=True),
df.loc[df.index.repeat(len(df2))].reset_index(drop=True)),
axis=1, ignore_index=True)
Вывод:
0 1 2 3
0 1 2 0 0
1 3 4 0 0
2 1 2 1 1
3 3 4 1 1
4 1 2 2 2
5 3 4 2 2
Или аналогично:
common_idx = pd.MultiIndex.from_product((df.index, df2.index))
out1 = df.reindex(common_idx.get_level_values(0)).set_index(common_idx)
out2 = df2.reindex(common_idx.get_level_values(1)).set_index(common_idx)
pd.concat((out2,out1),axis=1).reset_index(drop=True)
выходы:
c d a b
0 1 2 0 0
1 3 4 0 0
2 1 2 1 1
3 3 4 1 1
4 1 2 2 2
5 3 4 2 2