2017-01-08 15 views
2

Я бы хотел найти пересечение 2 панд DataFrame в соответствии с 2 столбцами 'x' и 'y' и объединить их в 1 DataFrame. Данные являются:Найдите пересечение двух панд DataFrame в соответствии с 2 столбцами

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 

Ожидаемый выход что-то вроде (может игнорировать индекс):

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 

Большое спасибо!

+1

Вы пробовали что-нибудь? Если да, укажите его на свой вопрос и скажите, на каком этапе вы потерпели неудачу. Пожалуйста, прочитайте [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask). В любом случае, многие из нас хотят помочь вам и добро пожаловать в StackOverflow :) – koceeng

+0

Благодарим за напоминание! Я включу его в следующий раз! – msv123

ответ

1

Вы можете узнать пересечение путем присоединения к x,y столбцов из df1 и df2, с помощью которого можно фильтровать df1 и df2 по внутреннему соединению, а затем конкатенации два результата с pd.concat должны дать то, что вам нужно:

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

enter image description here

+0

Проблема решена! Большое спасибо! – msv123

 Смежные вопросы

  • Нет связанных вопросов^_^