Как объединить два DataFrame в один?
Есть два DataFrame:
df1 = pd.DataFrame({'lit':['a', 'b', 'c']})
df2 = pd.DataFrame({'num':['1', '2', '3']})
Необходимо объединить DataFrame таким образом, чтобы каждой строке первого DataFrame соответствовали все строки второго DataFrame.
Ожидаемый результат:
df = pd.DataFrame({'lit':['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'],
'num':['1', '2', '3', '1', '2', '3', '1', '2', '3']})
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
Вам нужно декартово произведение множеств :
res = df1.assign(x=1).merge(df2.assign(x=1)).drop(columns="x")
результат:
In [30]: res
Out[30]:
lit num
0 a 1
1 a 2
2 a 3
3 b 1
4 b 2
5 b 3
6 c 1
7 c 2
8 c 3
Автор решения: Илья Митусов
→ Ссылка
from itertools import product
res = pd.DataFrame(product(df1.values.ravel(), df2.values.ravel()))
res.columns = ['lit', 'num']
результат:
lit num
0 a 1
1 a 2
2 a 3
3 b 1
4 b 2
5 b 3
6 c 1
7 c 2
8 c 3