自合并后 Pandas 数据框中的重复项
Posted
技术标签:
【中文标题】自合并后 Pandas 数据框中的重复项【英文标题】:Duplicates in Pandas Dataframe after Self Merge 【发布时间】:2018-12-27 12:31:35 【问题描述】:import pandas as pd
我有一个数据框表
d1 = pd.DataFrame('ID_A':[1, 2, 3], 'name':['Micha', 'Micha', 'Lea'])
-----------------
- ID_A - name
-----------------
- 1 - Micha
- 2 - Micha
- 3 - Lea
-----------------
我想做一个自我加入以获得以下内容
---------------------------
- ID_A_x - name - ID_A_y -
---------------------------
- 1 - Micha - 1 -
- 1 - Micha - 2 -
- 3 - Lea - 3 -
---------------------------
但是有
pd.merge(d1, d1, left_on='name', right_on='name', how='left')
我得到了对我来说相同的重复对,如何避免它们? 这个结果不是我想要的:
---------------------------
- ID_A_x - name - ID_A_y -
---------------------------
- 1 - Micha - 1 -
- 1 - Micha - 2 -
- 2 - Micha - 2 -
- 2 - Micha - 1 -
- 3 - Lea - 3 -
---------------------------
请帮忙。
【问题讨论】:
【参考方案1】:我不确定我是否正确理解了您。但是一种可能的解决方案(我认为这是您想要的)可能是:
import pandas as pd
d1 = pd.DataFrame('ID_A':[1, 2, 3], 'name':['Micha', 'Micha', 'Lea'])
pd.merge(d1.drop_duplicates(subset='name'), d1, on='name', how='left')
输出:
ID_A_x name ID_A_y
0 1 Micha 1
1 1 Micha 2
2 3 Lea 3
【讨论】:
工作,谢谢。 我似乎遇到了同样的问题。删除重复项可能会起作用,但我担心它首先会产生它们。有更好的解决方案吗? @ColoradoGranite 重复的原因是我们有非唯一的键。我们在“名称”上合并,Micha 在该列中出现了两次。我认为,避免重复的唯一方法是拥有唯一的键。因此,要回答您的问题,我无法根据上述数据找到更好的结果。【参考方案2】:pd.DataFrame('ID_A_x':[1,1,2,2,3],
'name':['Mi','Mi','Mi','Mi','Lea'],
'ID_A_y':[1,2,2,1,3]).drop_duplicates(['ID_A_y','name'])
【讨论】:
这非常适合事后清理。谢谢。 嗨@loegare,我可以有lib名称来显示“在..ms中执行,完成....” @rean 它是一个 jupyter 笔记本扩展,不记得确切的名称以上是关于自合并后 Pandas 数据框中的重复项的主要内容,如果未能解决你的问题,请参考以下文章