如何匹配列相等的两个数据帧的索引并填充不匹配的数据?

时间:2019-07-09 21:05:56

标签: python pandas dataframe

考虑两个数据框:

df1 = 
   1  2  3
0  A  B  C
1  A  B  C
2  A  B  C

df2 =  
   2  3  4
0  D  E  F
1  D  E  F
2  D  E  F

我正在尝试编写代码以查找列匹配的位置,然后根据位置将左右两边的数据填充到分离列的数据框中。

我正在寻找的结果

df1 =
   1  2  3  4
0  A  B  C  C
1  A  B  C  C
2  A  B  C  C

df2 =
   1  2  3  4
0  D  D  E  F
1  D  D  E  F
2  D  D  E  F

如果有帮助,列名将为序号

1 个答案:

答案 0 :(得分:0)

我们可以定义自己的函数,该函数在两个数据框中查找缺失的列并填充它们。

然后在这种情况下,我们可以用sort_index对列名进行排序,因为它们是数字,最后在axis=1上使用bfillffill

def allign_df(dataframe, compare_df):
    for col in compare_df.columns:
        if col not in dataframe.columns:
            dataframe[col] = np.NaN

    return dataframe
allign_df(df1, df2).sort_index(axis=1).ffill(axis=1)
allign_df(df2, df1).sort_index(axis=1).bfill(axis=1)
   1  2  3  4
0  A  B  C  C
1  A  B  C  C
2  A  B  C  C

   1  2  3  4
0  D  D  E  F
1  D  D  E  F
2  D  D  E  F

注意:如果要确保总是填充正确,请使用:

allign_df(df1, df2).sort_index(axis=1).ffill(axis=1).bfill(axis=1)
allign_df(df2, df1).sort_index(axis=1).bfill(axis=1).ffill(axis=1)