2017-01-08 1 views
2

Je voudrais trouver l'intersection de 2 pandas DataFrame selon 2 colonnes 'x' et 'y' et les combiner en 1 DataFrame. Les données sont les suivantes:Trouver l'intersection de 2 pandas DataFrame selon 2 colonnes

df[1]: 
    x y  id fa 
0 4 5 9283222 3.1 
1 4 5 9283222 3.1 
2 10 12 9224221 3.2 
3 4 5 9284332 1.2 
4 6 1 51249 11.2 

df[2]: 
    x y  id fa 
0 4 5 19283222 1.1 
1 9 3 39224221 5.2 
2 10 12 29284332 6.2 
3 6 1  51242 5.2 
4 6 2  51241 9.2 
5 1 1  51241 9.2 

Le résultat attendu est quelque chose comme (peut ignorer l'index):

x y  id fa 
0 4 5 9283222 3.1 
1 4 5 9283222 3.1 
2 10 12 9224221 3.2 
3 4 5 9284332 1.2 
4 6 1 51249 11.2 
0 4 5 19283222 1.1 
2 10 12 29284332 6.2 
3 6 1  51242 5.2 

Merci beaucoup!

+1

Avez-vous essayé quelque chose? Si c'est le cas, mentionnez-le sur votre question et dites à quelle étape vous avez échoué. Veuillez lire [Comment poser une bonne question] (http://stackoverflow.com/help/how-to-ask). Quoi qu'il en soit, beaucoup d'entre nous veulent vous aider et bienvenue à StackOverflow :) – koceeng

+0

Merci pour le rappel! Je vais l'inclure la prochaine fois! – msv123

Répondre

1

Vous pouvez trouver l'intersection en joignant les x,y colonnes de df1 et df2, avec laquelle vous pouvez filtrer df1 et df2 par jointure interne, et concaténer ensuite les deux résultats avec pd.concat devrait donner ce dont vous avez besoin:

intersection = df1[['x', 'y']].merge(df2[['x', 'y']]).drop_duplicates() 
pd.concat([df1.merge(intersection), df2.merge(intersection)]) 

enter image description here

+0

Problème résolu! Merci beaucoup! – msv123