Merge multiple dataframes based on a common column [duplicate]
Use merge
and reduce
In [86]: from functools import reduceIn [87]: reduce(lambda x,y: pd.merge(x,y, on='Col1', how='outer'), [df1, df2, df3])Out[87]: Col1 Col2 Col3 Col4 Col5 Col6 Col70 data1 3 4 7.0 4.0 NaN NaN1 data2 4 3 6.0 9.0 5.0 8.02 data3 2 3 1.0 4.0 2.0 7.03 data4 2 4 NaN NaN NaN NaN4 data5 1 4 NaN NaN 5.0 3.0
Details
In [88]: df1Out[88]: Col1 Col2 Col30 data1 3 41 data2 4 32 data3 2 33 data4 2 44 data5 1 4In [89]: df2Out[89]: Col1 Col4 Col50 data1 7 41 data2 6 92 data3 1 4In [90]: df3Out[90]: Col1 Col6 Col70 data2 5 81 data3 2 72 data5 5 3
Using pd.concat
:
df1.set_index('Col1',inplace=True)df2.set_index('Col1',inplace=True)df3.set_index('Col1',inplace=True)df = pd.concat([df1,df2,df3],axis=1,sort=False).reset_index()df.rename(columns = {'index':'Col1'}) Col1 Col2 Col3 Col4 Col5 Col6 Col70 data1 3 4 7.0 4.0 NaN NaN1 data2 4 3 6.0 9.0 5.0 8.02 data3 2 3 1.0 4.0 2.0 7.03 data4 2 4 NaN NaN NaN NaN4 data5 1 4 NaN NaN 5.0 3.0