自合并后在 Pandas 数据框中重复
Duplicates in Pandas Dataframe after Self Merge
import pandas as pd
我有一个数据框Table
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 -
---------------------------
请帮忙。
我不确定我是否理解正确。但一种可能的解决方案(我认为这是你想要的)可能是:
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
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'])
import pandas as pd
我有一个数据框Table
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 -
---------------------------
请帮忙。
我不确定我是否理解正确。但一种可能的解决方案(我认为这是你想要的)可能是:
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
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'])