In [35]: df1 = pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6])]) df2 = pd.DataFrame.from_items([('B', [5, 6, 7]), ('A', [8, 9, 10])]) df3 = pd.DataFrame.from_items([('C', [5, 6, 7]), ('D', [8, 9, 10]), ('A',[1,2,3]), ('B',[4,5,7])]) df_list = [df1,df2,df3[['A','B']]] pd.concat(df_list, ignore_index=True) Out[35]: A B 0 1 4 1 2 5 2 3 6 3 8 5 4 9 6 5 10 7 6 1 4 7 2 5 8 3 7