【发布时间】:2020-03-13 10:52:44
【问题描述】:
假设我有两个数据框df1 和df2。我可以通过这种方式进行内部和外部连接:
inner_df = df1.merge(df2, how="inner", left_on=col_df1, right_on=col_df2)
outer_df = df1.merge(df2, how="outer", left_on=col_df1, right_on=col_df2)
DataFrame.merge 方法允许您使用indicator 属性:如果为 True,则在输出 DataFrame 中添加一个名为“_merge”的列,其中包含有关每行来源的信息。对于合并键仅出现在“左”数据帧中的观察,该列的值为“left_only”,对于合并键仅出现在“右”数据帧中的观察,该列的值为“right_only”,如果发现观察的合并键,则为“both”两者都有。
我不确定我是否正确理解了这个属性的作用。这是我的问题:这两段代码是否等效?
inner_df = df1.merge(df2, how="inner", left_on=col_df1, right_on=col_df2)
outer_df = df1.merge(df2, how="outer", left_on=col_df1, right_on=col_df2,
indicator=True)
inner_df = outer_df[outer_df['_merge'] == 'both'].drop(columns=["_merge"])
【问题讨论】: