Как можно объединить два фрейма в один?
Есть два df:
a = pd.DataFrame([{'id': 1, 'b': 2, 'c': 0},
{'id': 1, 'b': 7, 'c': 2},
{'id': 1, 'b': 4, 'c': 2},
{'id': 1, 'b': 5, 'c': 2},
{'id': 1, 'b': 2, 'c': 2},
{'id': 2, 'b': 3, 'c': 2},
{'id': 2, 'b': 0, 'c': 2},
{'id': 2, 'b': 2, 'c': 2},
{'id': 3, 'b': 2, 'c': 2},
{'id': 3, 'b': 2, 'c': 2},
{'id': 3, 'b': 5, 'c': 2},
{'id': 3, 'b': 2, 'c': 1}])
b = pd.DataFrame([{'id': 1, 'b': 7, 'c': 2},
{'id': 1, 'b': 2, 'c': 2},
{'id': 1, 'b': 8, 'c': 7},
{'id': 1, 'b': 5, 'c': 2},
{'id': 1, 'b': 2, 'c': 2},
{'id': 2, 'b': 3, 'c': 2},
{'id': 2, 'b': 2, 'c': 9},
{'id': 2, 'b': 2, 'c': 2},
{'id': 3, 'b': 7, 'c': 2},
{'id': 3, 'b': 2, 'c': 2},
{'id': 3, 'b': 5, 'c': 2},
{'id': 3, 'b': 2, 'c': 1}])
Как можно объединить их в один, но id в df b должны измениться в зависимости от последнего id в df a, на выходе нужно получить:
pd.DataFrame([{'id': 1, 'b': 2, 'c': 0},
{'id': 1, 'b': 7, 'c': 2},
{'id': 1, 'b': 4, 'c': 2},
{'id': 1, 'b': 5, 'c': 2},
{'id': 1, 'b': 2, 'c': 2},
{'id': 2, 'b': 3, 'c': 2},
{'id': 2, 'b': 0, 'c': 2},
{'id': 2, 'b': 2, 'c': 2},
{'id': 3, 'b': 2, 'c': 2},
{'id': 3, 'b': 2, 'c': 2},
{'id': 3, 'b': 5, 'c': 2},
{'id': 3, 'b': 2, 'c': 1},
{'id': 4, 'b': 7, 'c': 2},
{'id': 4, 'b': 2, 'c': 2},
{'id': 4, 'b': 8, 'c': 7},
{'id': 4, 'b': 5, 'c': 2},
{'id': 4, 'b': 2, 'c': 2},
{'id': 5, 'b': 3, 'c': 2},
{'id': 5, 'b': 2, 'c': 9},
{'id': 5, 'b': 2, 'c': 2},
{'id': 6, 'b': 7, 'c': 2},
{'id': 6, 'b': 2, 'c': 2},
{'id': 6, 'b': 5, 'c': 2},
{'id': 6, 'b': 2, 'c': 1}])
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
res = a.append(b.assign(id=b["id"]+a["id"].max())).reset_index(drop=True)
результат:
In [312]: res
Out[312]:
id b c
0 1 2 0
1 1 7 2
2 1 4 2
3 1 5 2
4 1 2 2
5 2 3 2
6 2 0 2
7 2 2 2
8 3 2 2
9 3 2 2
10 3 5 2
11 3 2 1
12 4 7 2
13 4 2 2
14 4 8 7
15 4 5 2
16 4 2 2
17 5 3 2
18 5 2 9
19 5 2 2
20 6 7 2
21 6 2 2
22 6 5 2
23 6 2 1