Del*_*lla 6 python join inner-join dataframe pandas
以下是数据框列的外观。
df1='device number', 'date', ....<<10 个其他列>> 3500 条记录
df2='device number', 'date', ....<<9 个其他列>> 14,000 条记录
在每个数据帧中,“设备编号”和“日期”都不是唯一的。但是,它们的组合对于标识行是唯一的。
我试图形成一个新的数据框,它匹配来自 df1 和 df2 的行,其中设备号和日期都相等,并且具有这些 df1 和 df2 中的所有列。我正在尝试的熊猫命令是
df3=pd.merge(df1, df2, how='inner', on=['device number', 'date'])
Run Code Online (Sandbox Code Playgroud)
但是,df3 给了我一个形状为 (14,000, 21) 的数据框。列号是有道理的,但是内连接的行如何比任何左侧数据帧都多?这是否意味着我对内连接的理解有缺陷?另外,我怎样才能达到我描述的结果?
我能看到这种情况发生的唯一方法......特别是 14,000 与中的记录数完全相同的情况df2是,如果列组合df2不唯一。
您可以通过以下方式验证它们是否不唯一(True如果唯一)
df2.duplicated(['device number', 'date']).sum() == 0
Run Code Online (Sandbox Code Playgroud)
或者
df.set_index(['device number', 'date']).index.is_unique
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5323 次 |
| 最近记录: |