首页 > 解决方案 > 如何重新索引两个熊猫数据框中的列,以使它们都具有相同的列?

问题描述

我有两个数据框

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不包含c来自的列df2df2也不包含b来自的列df1,所以最终结果将是

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

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

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

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

标签: pythonpandasreindex

解决方案


使用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.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

推荐阅读