如何重新索引两个 pandas 数据框中的列,以便它们都具有相同的列?

How to reindex columns in two pandas dataframes so that they both have the same columns?

我有两个数据框

df1
>>>
   a  b
0  1  4
1  2  5
2  3  6

df2
>>>
   a  c
0  9  8
1  0  1
2  0  0

我想做的是在每个数据框中创建非重叠列并用零填充它们。因此,因为 df1 不包含 df2 中的列 c,并且 df2 不包含 df1 中的列 b,最终结果将是是

df1
>>>
   a  b  c
0  1  4  0
1  2  5  0
2  3  6  0

df2
>>>
   a  c  b
0  9  8  0
1  0  1  0
2  0  0  0

实现此目标的最佳方法是什么?

我试过使用 reindexreindex_like,但前者似乎只重新索引行而不是列,我不知道使用什么参数来重新索引列

df1.reindex(df2.columns, fill_value=0.)
>>>
     a    b
a  0.0  0.0
c  0.0  0.0

使用DataFrame.align:

df1, df2 = df1.align(df2, fill_value=0)
print (df1)
print (df2)
   a  b  c
0  1  4  0
1  2  5  0
2  3  6  0
   a  b  c
0  9  0  8
1  0  0  1
2  0  0  0

您的解决方案 Index.union and DataFrame.reindex,列 axis=1

c = df1.columns.union(df2.columns)
df1, df2 = df1.reindex(c, fill_value=0, axis=1), df2.reindex(c, fill_value=0, axis=1)
print (df1)
print (df2)
   a  b  c
0  1  4  0
1  2  5  0
2  3  6  0
   a  b  c
0  9  0  8
1  0  0  1
2  0  0  0