在Python中比较和均衡两个数据帧

时间:2018-07-11 23:30:44

标签: python dataframe

我有以下数据框: df1

C1    C2
F56   345
G45   65
H13   56
H67   578
Y78   64

df2

C1    C2
A34   10
F56   345
H13   56
Y78   64

我想比较以上两个数据帧,如果df1包含C1中的值,而df2中不存在此值,反之亦然,我想添加一个新行,其中缺少的值对应于C2值= 0。 因此,生成的数据帧将如下所示。

df1

C1    C2
A34   0
F56   345
G45   65
H13   56
H67   578
Y78   64

df2

C1    C2
A34   10
F56   345
G45   0
H13   56
H67   0
Y78   64

赞赏所有建议。

1 个答案:

答案 0 :(得分:2)

这是DataFrame.merge的一个很好的用例:https://pandas.pydata.org/pandas-docs/version/0.23/generated/pandas.DataFrame.merge.html

关于合并的很棒之处在于,如果您花了任何时间在关系数据库中(左,右,内部,外部),都会熟悉联接的方式。

在这种情况下,indicator参数是您特别感兴趣的:

result_df1 = df1.merge(
    df2,
    how = "outer",
    on = "C1",
    indicator = True,
    suffixes = ("", "_df2")
)

Merge Result

因此,在此特定联接的列np.nan中带有C2的结果中,您需要填充0,然后删除我们介绍的其他列。