Как объединить Series если колонки имеют разные названия?
df1 = pd.DataFrame({"Formula":['\tFormula A: UNIQUES(A)'] * 3, "level_number1": [1,2,3]})
df2 = pd.DataFrame({"Formula":['\tFormula B: UNIQUES(A)'] * 3, "level_number2": [4,5,6]})
df3 = pd.DataFrame({"Formula":['\tFormula C: UNIQUES(A)'] * 3, "level_number3": [7,8,9]})
pd.concat([df1, df2, df3])
Нужно чтобы было 2 колонки level number и Formula.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
Вариант 1:
In [81]: (pd.concat([df1, df2, df3])
.set_index("Formula")
.stack()
.reset_index(name="level")
.drop(columns="level_1"))
Out[81]:
Formula level
0 \tFormula A: UNIQUES(A) 1.0
1 \tFormula A: UNIQUES(A) 2.0
2 \tFormula A: UNIQUES(A) 3.0
3 \tFormula B: UNIQUES(A) 4.0
4 \tFormula B: UNIQUES(A) 5.0
5 \tFormula B: UNIQUES(A) 6.0
6 \tFormula C: UNIQUES(A) 7.0
7 \tFormula C: UNIQUES(A) 8.0
8 \tFormula C: UNIQUES(A) 9.0
Вариант 2:
In [84]: pd.concat(map(lambda x: x.rename(columns=lambda c: re.sub("(level_number)\d+", r"\1", c)),
[df1, df2, df3]))
Out[84]:
Formula level_number
0 \tFormula A: UNIQUES(A) 1
1 \tFormula A: UNIQUES(A) 2
2 \tFormula A: UNIQUES(A) 3
0 \tFormula B: UNIQUES(A) 4
1 \tFormula B: UNIQUES(A) 5
2 \tFormula B: UNIQUES(A) 6
0 \tFormula C: UNIQUES(A) 7
1 \tFormula C: UNIQUES(A) 8
2 \tFormula C: UNIQUES(A) 9
