【发布时间】:2021-06-29 20:41:22
【问题描述】:
我有两个形状的数据框: (4000,3) (2000,3) ,下面是信息和列:
df1:
| imo | speed | length |
|---|---|---|
| 1 | 1 | 4 |
| 1 | 2 | 4 |
| 2 | 10 | 10 |
| 2 | 12 | 10 |
df2:
| imo | dwt | name |
|---|---|---|
| 1 | 52 | test1 |
| 2 | 62 | test2 |
| 3 | 785 | test3 |
| 4 | 353 | test4 |
我想将 df2 的列 dwt 添加到基于 df1 的在同一个imo上。
| imo | speed | length | dwt |
|---|---|---|---|
| 1 | 1 | 4 | 52 |
| 1 | 2 | 4 | 52 |
| 2 | 10 | 10 | 62 |
| 2 | 12 | 10 | 62 |
但是当我尝试做 pd.merge(df1,df2, on = 'imo', how = 'inner') 时,结果比 df1 的原始形状要多得多,这怎么可能?
【问题讨论】:
-
我无法复制该问题。请提供具有更多信息的可重现示例:python 版本、pandas 版本等。
-
df2 中的 imo 是唯一的吗?如果不是这种情况,那么您将获得每个非唯一键的叉积合并。
-
@Viktor 是的,它是独一无二的
-
那么在
pd.merge(df1,df2, on = 'imo', how = 'inner')之后你可以使用drop_duplicates()方法 -
@AnuragDabas 结果又多了很多行