2017-08-22 2 views
0

Ich möchte Name Spalte in zwei Datenrahmen df1 und df2 vergleichen, geben Sie die übereinstimmenden Zeilen aus Datenrahmen df1 und speichern Sie das Ergebnis in neue Datenrahmen df3. Wie mache ich das in Pandas?Verschmelzen zwei Datenrahmen basierend auf einer Spalte

df1

place name qty unit 
NY Tom 2 10 
TK Ron 3 15 
Lon Don 5 90 
Hk Sam 4 49 

df2

place name price 
PH Tom 7  
TK Ron 5  

Ergebnis:

df3

place name qty unit 
NY Tom 2 10 
TK Ron 3 15 

Antwort

0

Option 1

Mit df.isin:

In [1362]: df1[df1.name.isin(df2.name)] 
Out[1362]: 
    place name qty unit 
0 NY Tom 2 10 
1 TK Ron 3 15 

Option 2

Durchführen einer Innen verbinden mit df.merge:

In [1365]: df1.merge(df2.name.to_frame()) 
Out[1365]: 
    place name qty unit 
0 NY Tom 2 10 
1 TK Ron 3 15 

Option 3

Mit df.eq:

In [1374]: df1[df1.name.eq(df2.name)] 
Out[1374]: 
    place name qty unit 
0 NY Tom 2 10 
1 TK Ron 3 15 
+0

Danke. das funktioniert. – Sun

0

Sie wollen etwas, genannt eine innere Verknüpfung.

df1.merge(df2,on = 'name') 

place_x name qty unit place_y price 
NY  Tom  2 10  PH  7 
TK  Ron  3 15  TK  5 

Die _x und _y passiert, wenn Sie eine Spalte in beiden Daten-Rahmen zusammengefügt werden.

+0

Ich habe dies bereits in meiner Antwort behandelt, und außerdem hat dies mehr Spalten als was OP will. –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ Ich verlasse es, falls es für einen anderen Benutzer hilfreich ist. Wenn OP Ihre Antwort am hilfreichsten findet, kann er sie akzeptieren. –

Verwandte Themen