当前位置: 首页 > 知识库问答 >
问题:

数据帧中的内部联接/合并比左数据帧提供更多的行

石超
2023-03-14

下面是数据帧列的样子。

df1=‘设备编号’、‘日期’、。。。。

df2=‘设备编号’、‘日期’、。。。。

在每个数据帧中,设备号和日期都不是唯一的。然而,它们的组合对于识别一行是唯一的。

我试图形成一个新的数据帧,它匹配来自df1和df2的行,其中设备号和日期都相等,并且拥有来自这些df1和df2的所有列。我正在尝试的熊猫命令是

df3=pd.merge(df1, df2, how='inner', on=['device number', 'date'])

然而,df3给了我一个数据帧的形状(14000,21)。列号是有意义的,但是内部联接怎么能比任何左数据帧拥有更多的行呢?这是否意味着我对内在联结的理解有缺陷?另外,我怎样才能达到我描述的结果?

共有1个答案

冯旭
2023-03-14

只有这样我才能看到这一切发生。。。特别是如果df2中的列组合不唯一,14000与df2中的记录数相同。

您可以通过以下方式验证它们是否唯一(如果唯一,则为True)

df2.duplicated(['device number', 'date']).sum() == 0

df.set_index(['device number', 'date']).index.is_unique
 类似资料:
  • 我有不同的数据帧,需要根据日期列将它们合并在一起。如果我只有两个数据帧,我可以使用,要使用三个数据帧,我可以使用,但是使用多个数据帧会变得非常复杂和不可读。 所有数据帧都有一个公共列-,但它们的行数和列数都不相同,我只需要其中每个日期对每个数据帧都是公共的行。 所以,我试图编写一个递归函数,返回一个包含所有数据的数据帧,但它不起作用。那么我应该如何合并多个数据帧呢? 我尝试了不同的方法,得到了一些

  • 我有两个数据帧DF1和DF2。 DF1: DF2: 我需要来自DF2的行数,其中EmploymentType='Employee',EmpStatus='Active',EmpStartDate 输出: 如何在不合并两个数据帧的情况下实现这一点? 我不能合并数据帧,因为没有公共键,而且因为我需要基于条件的行数,我不能在任何临时列上加入数据帧,因为我需要避免交叉连接。

  • 我有两个不同列数和行数的CSV文件。第一个CSV文件有M列和N行,第二个文件有H列和G行。一些列具有相同的名称。 null 另外,如果两个CSV文件有两个数据帧,并希望这样做,例如,如果我将第一个CSV加载到中,将第二个加载到中,然后希望合并到,类似于上面的示例。

  • 这是我的密码: 我想知道如何将df3绑定到单个数据帧中作为"NA"s? 我在r_blogger上找到了一篇关于将向量或长度不等的数据帧组合成一个数据帧的文章。http://www.r-bloggers.com/r-combining-vectors-or-data-frames-of-unequal-length-into-one-data-frame/ 但是我从数据中得到的数据框,其中一些是空的

  • 我有两个数据帧,希望比较它们并返回第一个数据帧(df1)中不在第二个数据帧(df2)中的行。我找到了一种比较它们并返回差异的方法,但无法找出如何只返回df1中缺失的部分。

  • 我有两个数据帧df1和df2。 i、 e.df1的索引为天,df2的索引为日期时间。我想在索引上执行DF1和DF2的内部连接,这样如果DF2中对应于DF2的时间在DF1中可用,则我们认为内部连接为真,否则为假。 我想获得两个df11和df22作为输出. df11将有共同的日期和相应的列从df1. df22将有共同的日期小时和相应的列从df2. "例如df1中的"2002-08-04"和df2中的"