Ich habe mit einer zusammenführenden Abfrage nach Hilfe gesucht, bin mir aber nicht sicher, wie meine Frage am präzisesten formuliert werden kann, sodass ich nichts gefunden habe das hilft direkt.Python-Datenrahmen in mehreren Spalten mit verschiedenen Join-Typen zusammenführen
Ich bin auf der Suche nach zwei Tabellen in drei Spalten mit einem linken Join zusammenführen, jedoch gibt es einige Null-Einträge im dritten Feld und in diesem Fall, ich glaube, ich möchte einen äußeren Join - also wenn es eine Übereinstimmung gibt In den ersten beiden Spalten werden die Daten verknüpft, unabhängig davon, ob in der dritten Spalte eine Übereinstimmung vorhanden ist.
df_A:
Competitor Product Type
A P1 X
A P2 X
A P2 Y
B P1 X
B P1 Y
df_B:
Competitor Product Type Value
A P1 X £5
A P2 X £10
A P2 Y £12
B P1 £15
Ich möchte eine Zusammenführung auf diesen beiden Tabellen mit den Konkurrenten, Produkt und Typ Felder machen. Allerdings wird nicht immer ‚Type‘ Feld in der zweiten Tabelle gefüllt werden und in diesem Fall möchte ich den Wert für alle Typen in Tabelle A angewendet werden, das heißt:
Competitor Product Type Value
A P1 X £5
A P2 X £10
A P2 Y £12
B P1 X £15
B P1 Y £15
ich erfolgreich auf dem ersten zusammenführen können zwei Spalten mit dem Code:
df_merge=pd.merge(df_A,df_B,how='left',on=['Competitor','Product'])
aber wenn ich die dritte Spalte ‚Typ‘ hinzufügen, diese auffüllt nur den Wert für die mit Streichhölzern in allen Spalten, das heißt:
Competitor Product Type Value
A P1 X £5
A P2 X £10
A P2 Y £12
B P1
B P1
gibt es eine Möglichkeit von Kombinationen die Join-Typen oder andere Wege, um zu dieser Lösung zu gelangen?
Wie würde dies für Felder, die NaN sind, angepasst werden? Anpassen des Codes an is_wild = df_B ['Typ'] == 'NaN' führt dazu, dass alle Einträge der Tabelle 'is wild' falsch sind – Sarah
Wenn der Platzhalterwert 'NaN' ist, verwenden Sie' is_wild = pd.isnull (df_B ['Typ']) '. Ich habe das zweite Beispiel aktualisiert, um es zu demonstrieren. – unutbu