我有以下数据框: 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
赞赏所有建议。
答案 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")
)
因此,在此特定联接的列np.nan
中带有C2
的结果中,您需要填充0
,然后删除我们介绍的其他列。