Я хотел бы объединить некоторый кадр данных и получить результирующий кадр данных, где и дополнительный столбец дает мне информацию об исходном кадре данных.
С этим фрагментом:
import pandas as pd
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']},
index=[0, 1, 2, 3])
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']},
index=[4, 5, 6, 7])
df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
'B': ['B8', 'B9', 'B10', 'B11'],
'C': ['C8', 'C9', 'C10', 'C11'],
'D': ['D8', 'D9', 'D10', 'D11']},
index=[8, 9, 10, 11])
frames = [df1, df2, df3]
result = pd.concat(frames,keys=['df1','df2','df3'])
print(result)
Я получаю этот результат с иерархическим индексом строки.
A B C D
df1 0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
df2 4 A4 B4 C4 D4
5 A5 B5 C5 D5
6 A6 B6 C6 D6
7 A7 B7 C7 D7
df3 8 A8 B8 C8 D8
9 A9 B9 C9 D9
10 A10 B10 C10 D10
11 A11 B11 C11 D11
Вместо этого я хотел бы получить этот результат:
A B C D src
0 A0 B0 C0 D0 df1
1 A1 B1 C1 D1 df1
2 A2 B2 C2 D2 df1
3 A3 B3 C3 D3 df1
4 A4 B4 C4 D4 df2
5 A5 B5 C5 D5 df2
6 A6 B6 C6 D6 df2
7 A7 B7 C7 D7 df2
8 A8 B8 C8 D8 df3
9 A9 B9 C9 D9 df3
10 A10 B10 C10 D10 df3
11 A11 B11 C11 D11 df3
Я посмотрел на https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html, но я могу не могу найти то, что я ищу.