熊猫DF,并在每个DF中找到缺少的列,并用NAN填充

时间:2018-12-23 02:34:37

标签: pandas

df,df2和df3为例,其中有一些重叠的列。

    >>> df
   A  B  C
0  3  4  3
1  1  1  4
2  4  4  4
3  2  3  2
4  1  0  3

>>> df2
   A  B  C  D
0  1  0  2  2
1  3  3  2  3
2  0  0  1  1
3  0  0  1  1
4  1  0  2  2

>>> df3

   A  B  C  D  F
0  2  2  0  1  1
1  4  3  3  0  3
2  0  4  0  0  0
3  0  2  2  1  0
4  4  2  4  1  1

找到那些缺少的列,并将它们添加到具有NAN值的每个df中

预期结果:

    >>> df
   A  B  C D  F
0  3  4  3 nan nan
1  1  1  4 nan nan
2  4  4  4 nan nan
3  2  3  2 nan nan
4  1  0  3 nan nan

>>> df2
   A  B  C  D F
0  1  0  2  2 nan
1  3  3  2  3 nan
2  0  0  1  1 nan
3  0  0  1  1 nan
4  1  0  2  2 naa

df3是

2 个答案:

答案 0 :(得分:1)

您可以检查reindex

df=df.reindex(columns=df3.columns)
df
Out[18]: 
   A  B  C   D   F
0  3  4  3 NaN NaN
1  1  1  4 NaN NaN
2  4  4  4 NaN NaN
3  2  3  2 NaN NaN
4  1  0  3 NaN NaN

更新

l=df.columns.tolist()+df2.columns.tolist()+df3.columns.tolist()
df=df.reindex(columns=set(l))

答案 1 :(得分:1)

这是DataFrame.align的好用例:

df1, _ = df1.align(df3)
df2, _ = df2.align(df3)

df1

   A  B  C   D   F
0  3  4  3 NaN NaN
1  1  1  4 NaN NaN
2  4  4  4 NaN NaN
3  2  3  2 NaN NaN
4  1  0  3 NaN NaN

df2

   A  B  C  D   F
0  1  0  2  2 NaN
1  3  3  2  3 NaN
2  0  0  1  1 NaN
3  0  0  1  1 NaN
4  1  0  2  2 NaN
相关问题