Add Missing Columns to the dataframe
You can create a combined column list like this
col_list = (df1.append([df2,df3])).columns.tolist()
Now add the columns to each dataframe
df1 = df1.loc[:, col_list].fillna(0)
print(df1)
A B C a item
0 2 0.0 0.0 1 A
1 3 0.0 0.0 1 B
2 4 0.0 0.0 0 C
df2 = df2.loc[:, col_list].fillna(0)
print(df2)
A B C a item
0 0.0 2 0.0 1 E
1 0.0 6 0.0 0 F
df3 = df3.loc[:, col_list].fillna(0)
print(df3)
A B C a item
0 0.0 0.0 3 1 G
1 0.0 0.0 4 0 H
1) Take the union of each dataframe's columns.
col_list = list(set().union(dfA.columns, dfB.columns, dfC.columns))
col_list.sort()
['A', 'B', 'C', 'a']
2) Use the reindex function.
dfA2 = dfA.reindex(columns=col_list, fill_value=0)
A B C a
A 2 0 0 1
B 3 0 0 1
C 4 0 0 0
dfB2 = dfB.reindex(columns=col_list, fill_value=0)
A B C a
E 0 2 0 1
F 0 6 0 0
dfC2 = dfC.reindex(columns=col_list, fill_value=0)
A B C a
G 0 0 3 1
H 0 0 4 0
3) You can use reindex to drop, add, or duplicate columns.
dfA3 = dfA.reindex(columns=['C', 'A', 'A', 'D'], fill_value=0)
C A A D
A 0 2 2 0
B 0 3 3 0
C 0 4 4 0