You can use pandas.concat by choosing axis=1 to combine multiple DataFrames.
Please note, however, that I first set the index df1, df2, df3 to use variables (foo, bar, etc.), rather than default integers.
import pandas as pd df1 = pd.DataFrame({'head1': ['foo', 'bix', 'bar'],'val': [11, 22, 32]}) df2 = pd.DataFrame({'head2': ['foo', 'xoo', 'bar','qux'],'val': [1, 2, 3,10]}) df3 = pd.DataFrame({'head3': ['xoo', 'bar',],'val': [20, 100]}) df1 = df1.set_index('head1') df2 = df2.set_index('head2') df3 = df3.set_index('head3') df = pd.concat([df1, df2, df3], axis = 1) columns = ['head1', 'head2', 'head3'] df.columns = columns print(df) head1 head2 head3 bar 32 3 100 bix 22 NaN NaN foo 11 1 NaN qux NaN 10 NaN xoo NaN 2 20
source share