如何为两个熊猫数据帧中的列重新编制索引,使它们都具有相同的列?



>我有两个数据帧

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.unionDataFrame.reindexaxis=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

最新更新