2017-06-04 7 views
1

Wie kann ich die Zeilen des Dataframe1 in die Dataframe2 zusammenführen?
Pandas Datenrahmen einen bestimmten Fall der Zusammenführung

  • Wenn einer der entsprechenden Werte NaN dann sollte der Wert von den anderen kopiert werden.
  • Wenn beide sind NaN dann NaN.
  • Wenn keine NaN sind, dann die erste.


Dataframe1 Dataframe1



Dataframe2 Dataframe2

Vielen Dank im Voraus

+0

Bitte geben Sie die Daten im Text anstatt in Bilder. Es erleichtert das Beantworten und Anzeigen. – piRSquared

Antwort

4

können Sie verwenden combine_first:

df 
Out: 
    col1 col2 col3 col4 
0 NaN NaN 3.0  4 
1 1.0 2.0 NaN  5 

df.loc[0].combine_first(df.loc[1]) 
Out: 
col1 1.0 
col2 2.0 
col3 3.0 
col4 4.0 
Name: 0, dtype: float64 

im angegebenen Format:

df.loc[0].combine_first(df.loc[1]).to_frame('Row1-2').T 
Out: 
     col1 col2 col3 col4 
Row1-2 1.0 2.0 3.0 4.0 

Eine Alternative:

df.loc[[0]].fillna(df.loc[1]) 
Out: 
    col1 col2 col3 col4 
0 1.0 2.0 3.0  4 

Und eine sauberere Version von @MaxU Füllung:

df.bfill().iloc[[0]] 
Out: 
    col1 col2 col3 col4 
0 1.0 2.0 3.0  4 
+3

Ich denke 'df.bfill(). Iloc [[0]]' wäre ein bisschen generischer ;-) – MaxU

+0

@MaxU Ja, das ist viel klarer. Sie sollten es als Antwort posten! :) – ayhan

+2

Nein, ich werde es nicht als Antwort posten, da es nur eine leicht modifizierte Version Ihrer Antwort ist :) – MaxU

Verwandte Themen