2016-08-26 3 views
1

Ich habe zwei Tabellen, a und b jeweils mit vielen Zeilen. ich habe einen SQL-CodeSQL Doppel beitreten in Python

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

im Sprichwort versucht, dies in Python zu machen mit der .merge() Funktion, und durch eine Mitte der Tabelle aus dem ersten beitreten zu machen und dann zu machen versuchen, durch diese Tabelle Beitritt zur nächsten Bedingung. aber Python zieht einen Fehler

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

dies gibt einen Speicherfehler: IVE versucht, dies mit verschiedenen & Methoden zu replizieren. ive auch versucht, diese

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

im bei der ein verlieren, was

+0

Die obige Aussage kann auch geschrieben werden als 'a.merge (b, wie = 'inner', on = ['name', 'Alter' ]) '. Sollte einen Unterschied im Speicher machen. –

+0

Ja, danke, dass ich glaube, nur als Referenz für andere konnte ich diese Formel nicht verwenden, da meine Spalten unterschiedliche Namen hatten, aber ich habe gerade eine neue Spalte erstellt und sie den Namen genannt, den ich brauchte und gleich der anderen Spalte, Problem gelöst! –

Antwort

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

zu tun, und wenn Sie Ihre Spalte für Alter in b sagen hatte einen anderen Namen sagen Jahre, was mir der Fall war ich dieses

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

und dann könnte ich das obige verwenden. Ich könnte auch diese Spalte umbenannt haben, aber alle ursprünglichen Spalten dort behalten