Ich habe 2 Datenrahmen, von denen einer zusätzliche Informationen für einige (aber nicht alle) der Zeilen in den anderen hat.Pandas Merge Datenrahmen füllen fehlende Werte
names = df({'names':['bob','frank','james','tim','ricardo','mike','mark','joan','joe'],
'position':['dev','dev','dev','sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank'],
'classification':['thief','thief','good','thief']})
Ich mag die Klassifizierung Spalt aus dem info
Datenrahmen nehmen oben und fügen Sie es den names
Datenrahmen oben. Wenn ich jedoch combined = pd.merge(names, info)
mache, ist der resultierende Datenrahmen nur 4 Zeilen lang. Alle Zeilen, die keine zusätzlichen Informationen enthalten, werden gelöscht.
Idealerweise hätte ich die Werte in diesen fehlenden Spalten auf unbekannt gesetzt. Daraus ergibt sich ein Datenrahmen, in dem einige Leute die Theives sind, einige sind gut und der Rest ist unbekannt.
EDIT: Eine der ersten Antworten, die ich erhielt, schlug vor, mit Merge Outter, die einige seltsame Dinge zu tun scheint. Hier ist ein Codebeispiel:
names = df({'names':['bob','frank','bob','bob','bob''james','tim','ricardo','mike','mark','joan','joe'],
'position':['dev','dev','dev','dev','dev','dev''sys','sys','sys','sup','sup','sup']})
info = df({'names':['joe','mark','tim','frank','joe','bill'],
'classification':['thief','thief','good','thief','good','thief']})
what = pd.merge(names, info, how="outer")
what.fillna("unknown")
Das Merkwürdige ist, dass in der Ausgabe werde ich eine Zeile, wo der resultierende Name „bobjames“ ist und eine andere, wo der Position „devsys“. Obwohl die Rechnung nicht im Namensdatenrahmen erscheint, erscheint sie schließlich im resultierenden Datenrahmen. Also brauche ich wirklich einen Weg zu sagen, einen Wert in diesem anderen Datenrahmen zu suchen und wenn Sie etwas finden, das auf diese Spalten passt.
tun Sie 'kombiniert wollen = pd.merge (Namen, info, wie = 'äußeren')'? – EdChum
Sie müssen das Ergebnis von 'fillna' oder pass param' inplace = True' also 'what = what.fillna ('unknown')' oder 'what.fillna ('unknown', inplace = True)' – EdChum
'bobjames zuweisen 'und' devsys 'werden durch fehlende Kommas in Ihren Eingabedaten verursacht (wahrscheinlich ein Tippfehler). "Rechnung" erscheint, weil Sie äußere Zusammenführung verwenden. Verwenden Sie how = 'left', wenn Sie nur die Werte von Namen mit optionalen Werten aus info möchten. –