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

时间:2017-07-23 06:18:43

标签: python pandas join dataframe inner-join

以下是数据帧列的外观。

df1 ='设备编号','日期',....<<< 10其他列>> 3500条记录

df2 ='设备编号','日期',....<<< 9其他列>> 14,000条记录

在每个数据框中,既没有“设备编号”,也没有'日期'很独特。但是,它们的组合对于识别行是唯一的。

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

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

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

1 个答案:

答案 0 :(得分:1)

我只能看到这种情况发生...特别是如果df2中的列组合不是<{1}}中的14,000与df2中的记录数相同/ strong>独特。

您可以使用以下内容验证它们不是唯一的(True如果唯一)

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

或者

df.set_index(['device number', 'date']).index.is_unique