Ersetze Spaltenwerte basierend auf einem anderen Datenrahmen python pandas - besser?

8

Hinweis: Der Einfachheit halber verwende ich ein Spielzeugbeispiel, weil das Kopieren / Einfügen von Datenrahmen im Stapelüberlauf schwierig ist (bitte lassen Sie mich wissen, ob es einen einfachen Weg dafür gibt).

Gibt es eine Möglichkeit, die Werte von einem Datenrahmen auf einen anderen zu übertragen, ohne die Spalten _X, _Y zu erhalten? Ich möchte, dass die Werte in einer Spalte alle Nullwerte einer anderen Spalte ersetzen.

%Vor%

In einem früheren Post habe ich combinate_First und dropna () versucht, aber diese funktionieren nicht.

Ich möchte Nullen in df1 durch die Werte in df2 ersetzen. Außerdem möchte ich, dass alle Zeilen mit den gleichen Namen gemäß df2 geändert werden.

%Vor%

Meine bestehende Lösung macht Folgendes: Ich Teilmenge basierend auf den Namen, die in DF2 vorhanden sind, und ersetzen Sie dann diese Werte mit dem richtigen Wert. Allerdings hätte ich eine weniger hacky Art, dies zu tun.

%Vor%     
user3314418 15.07.2014, 21:38
quelle

2 Antworten

11

Verwenden Sie die boolesche Maske von isin um das df zu filtern und die gewünschten Zeilenwerte aus dem rhs df zuzuweisen:

%Vor%     
EdChum 15.07.2014, 21:45
quelle
1

In [27]: Das ist der richtige.

%Vor%

[4 Zeilen x 4 Spalten]

Das obige funktioniert nur, wenn alle Zeilen in df1 in df existieren. Mit anderen Worten, df sollte Supermenge von df1

sein

Incase, wenn Sie einige nicht übereinstimmende Zeilen zu df in df1 haben, sollten Sie unten

folgen

Mit anderen Worten, df ist keine Obermenge von df1:

%Vor%     
KSD 03.10.2017 18:05
quelle

Tags und Links