Смотрите комментарий @HarvIpan: это правильно.Вы можете составить список данных pandas:
import pandas as pd
df = pd.DataFrame({'a':[1,2,3],'b':['a','b','c']})
df.set_index('a', inplace=True)
df2 = pd.DataFrame({'a':[1,2,3],'b':['d','e','f']})
df2.set_index('a', inplace=True)
df3 = pd.DataFrame({'a':[1,2,3],'c':['g','e','h']})
df3.set_index('a', inplace=True)
list_of_dfs = [df,df2,df3]
pd.concat(list_of_dfs, sort=False)
b c
a
1 a NaN
2 b NaN
3 c NaN
1 d NaN
2 e NaN
3 f NaN
1 NaN g
2 NaN e
3 NaN h