假设我有两个数据格式: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”,其合并键只出现在“左”DataFrame中,"right_only“表示其合并键仅出现在‘右’DataFrame中,而”两者都“,如果在两者中都找到该观察的合并键。
我不确定我是否正确地理解了这个属性的作用。下面是我的问题:这两段代码是否等效?
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"])发布于 2020-03-13 11:18:03
这两个合并返回相同的行。但不是完全相同的数据。不同之处是:
inner_df2有一个额外的列_merge列-好的,如果用...drop(columns='_merge')长话短说:两者是否等价实际上取决于实际的用例.
https://stackoverflow.com/questions/60669139
复制相似问题