【发布时间】:2022-01-23 15:49:47
【问题描述】:
我已通过特定 ID 上的 Left Join 合并了两个数据集。 然而,正确的 DF 有多个具有相同 ID 的行,但其中可以有不同的企业归因于相同的 ID。每个 ID 我只需要一行,它需要是左右数据框中的 Businesses 匹配的那一行。
然而,最后一个问题是,两个数据框中的业务不完全匹配(因此我没有对此进行合并) - 左侧数据框将包含部分业务名称,而右侧 DF 包含全名,因此我想当右 DF 业务名称列中的业务名称不包含原始 DF 名称列中的任何单词时,我可以删除重复项。
下面是一个我希望更有意义的可视化
目前:
| Business Name (Left) | ID | Business Name (Right) |
|---|---|---|
| Dewes | 1225 | Dewes & Sons Ltd |
| Dewes | 1225 | Stanleys PLC |
| Dewes | 1225 | Shark Ltd |
| Dewes | 1225 | Robots R Us Inc |
| Apple | 1456 | L&L & Co |
| Apple | 1456 | Apple Inc |
我想要什么
| Business Name (Left) | ID | Business Name (Right) |
|---|---|---|
| Dewes | 1225 | Dewes & Sons Ltd |
| Apple | 1456 | Apple Inc |
谢谢, 奥利
【问题讨论】:
-
您可以删除重复项:
df.drop_duplicates(subset=["Business Name (Left)","ID"]) -
@Bharath 这不一定意味着我会得到正确的匹配企业认为对吗?例如,如果我删除重复项,我最终可能会在左侧出现“Dewes”,而在右栏中会出现“Shark Ltd”,这会是错误的吗?
-
如果要保留第一个副本,请相应地使用参数
keep='first'和keep='last'作为最后一个副本。 -
如果要按字母顺序保留,请先使用
sort_values,然后删除重复项。 -
@Bharath 我想保留的行可能是第一行、最后一行或中间行——对它们进行排序不一定能解决这个问题。不过谢谢你,我知道我需要删除重复项 - 我现在只需要在条件的其他部分保留那些右侧包含左侧的部分
标签: pandas