python - Pandas 数据框中的内部连接/合并提供比左侧数据框更多的行

标签 python pandas join dataframe inner-join

这是数据框列的样子。

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

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

在每个数据框中,“设备编号”和“日期”都不是唯一的。但是,它们的组合对于标识一行是唯一的。

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

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

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

最佳答案

我能看到这种情况发生的唯一方法...特别是 14,000 与 df2 中的记录数完全相同的情况下,如果 df2 中的列组合不是唯一的。

您可以通过以下方式验证它们不是唯一的(True 如果唯一)

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

或者

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

关于python - Pandas 数据框中的内部连接/合并提供比左侧数据框更多的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45262134/

相关文章:

python - 我的模型具有较高的准确度和 val_accuracy,但在测试数据上给出错误的结果

python-3.x - ConnectionError : Error 104 while writing to socket. 连接被对等方重置

Python pandas 使用滚动以矢量化方式应用于 groupby 对象来计算机车车辆 beta

MySQL 三个表的连接

mysql - 选择所有连接行都匹配的记录

python - 无法导入名称 'views' 、.Python、Django

python - 如何迭代多个文本文件中的行并提取表中的值。

CPU 和墙时间中的 Python 内存错误

python - 计算连续天数 python 数据框

mysql - 如何隔离查询以查找特定字段?