2016-08-26 3 views
1

У меня есть две таблицы, a и b, каждая со многими строками. У меня есть код SQL, говорящийSQL double join in python

SELECT* FROM a INNER JOIN b ON (a.names = b.names) and (a.age = b.age) 

им пытаются сделать это в Python, используя функцию .merge(), и сделав в середине таблицы из первого соединения и затем пытается сделать это путем присоединения к этой таблице к следующему условию. но питон тянет ошибку

join3 = a.merge(b,how='inner',left_on = 'name', right_on = 'name') 
join4 = join3.merge(b,how'inner',left_on='age',right_on='age') 

это дает ошибку памяти: Ive пытался повторить это, используя различные методы &. ив также попробовал этот

merge = a.merge(b[b.age==a.age],left_on= 'name', right_on='name') 

внутримышечно в потерять, что делать

+0

Вышеприведенное утверждение также может быть написано как 'a.merge (b, how = 'inner', on = ['name', 'age' ]) '. Должно иметь какое-то значение в используемой памяти. –

+0

Да, спасибо, что я это верю, так же, как ссылка для других, я не мог использовать эту формулу, так как мои столбцы имели разные имена, но я только что создал новый столбец и назвал это имя, которое мне нужно, и равное ему для другого столбца, задача решена! –

ответ

0
a.merge(b, how='inner', on=['name','age']) 

и если говорят ваши колонки для возрастов б было сказать другое название года, который сделал мой я сделал это

b['age'] = b['years'] 

, а затем я мог бы использовать вышеизложенное. Я также мог бы переименовать эту колонку, но хотел сохранить там все исходные столбцы.