首页 > 解决方案 > 在 Python 中比较和均衡两个数据帧

问题描述

我有以下数据框: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

感谢任何建议。

标签: pythondataframe

解决方案


这是 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.nanin 列的结果,然后删除我们引入的额外列。C20


推荐阅读