it-swarm.com.de

Python - Funktion ähnlich wie VLOOKUP (Excel)

ich versuche, zwei Datenrahmen zu verbinden, kann aber die Möglichkeiten, die Python bietet, nicht verstehen.

Erster Datenrahmen:

ID MODEL   REQUESTS ORDERS
1  Golf    123      4
2  Passat  34       5
3  Model 3 500      8
4  M3      5        0

Zweiter Datenrahmen:

MODEL   TYPE  MAKE
Golf    Sedan Volkswagen
M3      Coupe BMW
Model 3 Sedan Tesla

Was ich möchte, ist, eine weitere Spalte im ersten Datenrahmen namens "make" hinzuzufügen, so dass es so aussieht:

ID MODEL   MAKE       REQUESTS ORDERS
1  Golf    Volkswagen 123      4
2  Passat  Volkswagen 34       5
3  Model 3 Tesla      500      8
4  M3      BMW        5        0

Ich habe mir schon die Zusammenführung, Verknüpfung und Zuordnung angesehen, aber alle Beispiele haben nur die erforderlichen Informationen am Ende des Datenrahmens angehängt.

6
Christian

Ich denke, Sie können insert mit map von Series verwenden, die mit df2 erstellt wurden (wenn ein Wert in der Spalte MODEL in df2 fehlt, NaN erhalten)

df1.insert(2, 'MAKE', df1['MODEL'].map(df2.set_index('MODEL')['MAKE']))
print (df1)
   ID    MODEL        MAKE  REQUESTS  ORDERS
0   1     Golf  Volkswagen       123       4
1   2   Passat         NaN        34       5
2   3  Model 3       Tesla       500       8
3   4       M3         BMW         5       0
6
jezrael

Zwar nicht in diesem Fall, aber es kann Szenarien geben, in denen df2 mehr als zwei Spalten hat und Sie nur eine davon zu df1 hinzufügen möchten, basierend auf einer bestimmten Spalte als Schlüssel. Hier ist ein generischer Code, den Sie möglicherweise nützlich finden.

df = pd.merge(df1, df2[['MODEL', 'MAKE']], on = 'MODEL', how = 'left')
0
Bhagabat Behera

Die join-Methode verhält sich sehr ähnlich wie ein VLOOKUP. Es verbindet eine Spalte im ersten Datenrahmen mit dem Index des zweiten Datenrahmens. Sie müssen also MODEL im zweiten Datenrahmen als Index festlegen und nur die Spalte MAKE übernehmen.

df.join(df1.set_index('MODEL')['MAKE'], on='MODEL')

Werfen Sie einen Blick auf die Dokumentation von join , da sie eigentlich das Word VLOOKUP verwendet.

0
Ted Petrou

Ich habe immer die Vereinigung als einen einfachen Weg gefunden, dies zu tun:

df1.merge(df2[['MODEL', 'MAKE']], how = 'left')

Allerdings muss ich zugeben, dass es nicht so kurz und schön wäre, wenn Sie die neue Kolumne etwas anderes als "MAKE" nennen möchten.

0
Yona