>我有两个数据帧
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
实现这一目标的最佳方法是什么?
我尝试使用reindex
和reindex_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
和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