考虑两个数据框:
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
如果有帮助,列名将为序号
答案 0 :(得分:0)
我们可以定义自己的函数,该函数在两个数据框中查找缺失的列并填充它们。
然后在这种情况下,我们可以用sort_index
对列名进行排序,因为它们是数字,最后在axis=1
上使用bfill
和ffill
:
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)