Объединение нескольких DataFrame с использованием нескольких общих столбцов

Имеется N-ое количество df:

ldf = [df1,df2,df3,df4,df5]

Отдельный фрейм имеет следующий вид:

df1

id na er ty uy 
er tr rt ty rf
df gh yh ju jk

df2

id na er ty uy
rf gb th yn lk
lk pl vb sd gb

Просьба, подсказать, как объединить все df приведя к следующему виду:

       df1 df1 df1 | df2 df2 df2 ...
id  na  er  ty  uy | er  ty  uy ...
er  tr  rt  ty  rf | rr  rf  ff ...
df  gh  yh  ju  jk | fr  df  gh ...

Соответсвенно, объединить по столбцам id и na.


Ответы (1 шт):

Автор решения: MaxU

Пример решения для приведенных в вопросе примеров данных:

In [25]: lst = [df1, df2]

In [26]: idx_cols = ["id", "na"]

In [27]: res = pd.concat([df.set_index(idx_cols) for df in lst], axis=1)

In [28]: res
Out[28]:
        er   ty   uy   er   ty   uy
id na
df gh   yh   ju   jk  NaN  NaN  NaN
er tr   rt   ty   rf  NaN  NaN  NaN
lk pl  NaN  NaN  NaN   vb   sd   gb
rf gb  NaN  NaN  NaN   th   yn   lk
→ Ссылка