2017-07-28 7 views
1

Filling Nehmen wir an, ich zwei Pandas Datenrahmen haben df1 und df2eine Pandas Datenrahmen mit Werten aus einem zweiten Datenrahmen mit einigen Zeilen und Spalten gemeinsam

df1 
     s1 s2 s3 
    bob nan nan nan 
    john nan nan nan 
    matt nan nan nan 

und

df2 
     s1 s3 s4 
    bob 32 11 22 
    matt 1 nan 2 

Ich würde füllen df1 mit Werten von df2 Zeilen und Spalten, die in df1 existieren, so dass meine Ausgabe ist

 s1 s2 s3 
bob 32 nan 11 
john nan nan nan 
matt 1 nan nan 

Dies bedeutet, in diesem Spielzeug Fall, ich bin nicht interessiert an Spalte s4 von df2 zu füllen df1. Alle meine Versuche, merge zu verwenden, sind leider fehlgeschlagen, und ich habe immer einen Datenrahmen mit allen nan.

Antwort

4

Inplace Betrieb
Verwenden pd.DataFrame.update
Dies überschreibt alle Positionen in df1 wo ein Nicht-Null-Wert in df2

df1.update(df2) 

df1 

     s1 s2 s3 
bob 32.0 NaN 11.0 
john NaN NaN NaN 
matt 1.0 NaN NaN 

eine Kopie 1
Verwendung Produzieren war pd.DataFrame.align , pd.DataFrame.fillna und pd.DataFrame.reindex_like
fillna wird nicht funktionieren, wenn der Index und die Spalten ausgerichtet sind.

pd.DataFrame.fillna(*df1.align(df2)).reindex_like(df1) 

     s1 s2 s3 
bob 32.0 NaN 11.0 
john NaN NaN NaN 
matt 1.0 NaN NaN 

erzeugen eine Kopie 2
pd.DataFrame.combine_first und pd.DataFrame.reindex_like
Es ist fraglich, welche Sie die erste Stelle setzen. Betrachtet man df1 ist alles nan ist es nicht wirklich wichtig. Dies wird jedoch alle bereits vorhandenen Nicht-Null-Werte in df1 beibehalten. Andernfalls können Sie die Positionen auf df2.combine_first(df1) umstellen.

df1.combine_first(df2).reindex_like(df1) 

     s1 s2 s3 
bob 32.0 NaN 11.0 
john NaN NaN NaN 
matt 1.0 NaN NaN 
+1

Vielen Dank für die Einführung von mir zu "Reindex_like"! Es sieht aus wie 'df2.reindex_like (df1)' erzeugt auch das gewünschte Ergebnis. – unutbu

+1

In diesem Fall tut es das. Aber vielleicht nicht in konstruierten Fällen. Ich habe nicht einmal an das gedacht, sehr nett! – piRSquared

Verwandte Themen