Полное внешнее объединение двух датафреймов - PullRequest
1 голос
/ 26 февраля 2020

Полное внешнее объединение с сохранением ключа соединения во всех столбцах

У меня есть три кадра данных с размером mx 1, каждый кадр данных с различным m:

df1 = pd.DataFrame({'x':['A1', 'A2', 'A3', 'A4']})
df2 = pd.DataFrame({'y':['A1', 'A3', 'A5', 'A4']})
df3 = pd.DataFrame({'z':['A1','A2', 'A5', 'A6']})

Мне нужен один фрейм данных df_merged, например:

     x    y    z
0   A1   A1   A1
1   A2  nan   A2
2   A3   A3  nan
3   A4   A4  nan
4  nan   A5   A5
5  nan  nan   A6

Пытался часами решать эту проблему, используя pd.merge и pd.concat и pd.join

Любая помощь будет принята с благодарностью ! Спасибо!

1 Ответ

2 голосов
/ 26 февраля 2020

Используйте concat в понимании списка с созданием индекса по первому столбцу по DataFrame.set_index:

dfs = [df1, df2, df3]

df = pd.concat([x.set_index(x.iloc[:, 0], drop=False) 
                for x in dfs], axis=1, sort=True).reset_index(drop=True)
print (df)
     x    y    z
0   A1   A1   A1
1   A2  NaN   A2
2   A3   A3  NaN
3   A4   A4  NaN
4  NaN   A5   A5
5  NaN  NaN   A6
...