首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas与indicator=True的内外融合

Pandas与indicator=True的内外融合
EN

Stack Overflow用户
提问于 2020-03-13 10:52:44
回答 1查看 2.4K关注 0票数 1

假设我有两个数据格式:df1df2。我可以这样做一个内部连接和一个外部连接:

代码语言:javascript
复制
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中,而”两者都“,如果在两者中都找到该观察的合并键。

我不确定我是否正确地理解了这个属性的作用。下面是我的问题:这两段代码是否等效?

代码语言:javascript
复制
inner_df = df1.merge(df2, how="inner", left_on=col_df1, right_on=col_df2)
代码语言:javascript
复制
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"])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-13 11:18:03

这两个合并返回相同的行。但不是完全相同的数据。不同之处是:

  1. inner_df2有一个额外的列_merge列-好的,如果用...drop(columns='_merge')
  2. The列处理它很简单,那么可能已经填充了NaN值。如果某些类型具有整数类型,则它们已转换为浮点数类型。这通常不是一个主要问题,因为一旦您只选择没有NaN值的行,就可以将它们转换回原来的类型。,在一个用例中是一个严重的问题:如果您有一个numpy int64类型并使用超过53位的值。在这种情况下,第四次和向后转换将使最小有效位为零。这将导致不精确的值--它们表示某些度量,或者如果它们是标识符,则更糟。

长话短说:两者是否等价实际上取决于实际的用例.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60669139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档