2017-01-04 2 views
1

Mein ZielZusammenführen von zwei Datenrahmen während einer bestimmten Zeile zu halten

Ich möchte zwei Datenrahmen fusionieren, während die Zeile zu halten, row_to_keep

Datenrahmen

>>> df 

       ColumnA    Stats 
0    Cake    872 
1    Cheese Cake   912 
2    Egg     62 
3    Raspberry Jam  091 
4    Bacon    123 
5    Bread    425 
row_to_keep  NaN     999 

>>> df1 

       ColumnB 
0    Cake 
1    Cheese Cake  
3    Raspberry Jam 
4    Bacon 

Mein Versuch

new_df = df.merge(df1, left_on="ColumnA", right_on="ColumnB") 

>>> new_df 

       ColumnA   Stats ColumnB 
0    Cake   872  Cake 
1    Cheese Cake  912  Cheese Cake 
3    Raspberry Jam 091  Raspberry Jam 
4    Bacon   123  Bacon 

Erwartete Ausgabe

Die Zusammenführung funktioniert wie erwartet, aber ich bin zu kämpfen eine effiziente Art und Weise zu finden, die letzte Zeile von df zu halten.

   ColumnA   Stats 
0    Cake   872 
1    Cheese Cake  912 
3    Raspberry Jam 091 
4    Bacon   123 
row_to_keep  NaN    999 

Außerdem wäre es ein Verfahren so beschaffen sein, dass diese Ausgabe wird durch 'row_to_keep' anstelle der row[number] mit?

+1

... wie wäre es eine LEFT JOIN tun von ' df' nach 'df1' über die' merge' Methode? –

+0

Oder Sie könnten die Zeile später zu 'new_df' hinzufügen. –

Antwort

1

UPDATE:

In [139]: df[df.ColumnA.isin(df1.ColumnB)].append(df.loc['row_to_keep']) 
Out[139]: 
        ColumnA Stats 
0      Cake 872 
1    Cheese Cake 912 
3   Raspberry Jam  91 
4     Bacon 123 
row_to_keep   NaN 999 

Alte Antwort:

ist hier eine Lösung:

In [126]: df.merge(df1, left_on="ColumnA", right_on="ColumnB").append(df.loc['row_to_keep']) 
Out[126]: 
        ColumnA Stats  ColumnB 
0      Cake 872   Cake 
1    Cheese Cake 912 Cheese Cake 
2   Raspberry Jam  91 Raspberry Jam 
3     Bacon 123   Bacon 
row_to_keep   NaN 999   NaN 

Erläuterung:

df.loc['row_to_keep'] sele cts eine Reihe von Indexwert ('row_to_keep') und DF.append(row) - hängt es an der fusionierten DF

ich dort allerdings zugeben muss, weniger sein könnte hässlich Lösungen ...

+0

Das ist gut genug für mich! Danke :) Darf ich schnell um eine Erklärung/Klärung über '.loc' bitten, in Bezug auf meine Frage? – LearningToPython

+1

@ BenF97, ich habe eine sehr kurze Erklärung zu der Antwort hinzugefügt. Vielleicht möchten Sie auch lesen [über verschiedene Optionen für die Indexierung] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#different-choices-for-indexing) – MaxU

+0

Sweet ;-) Vielen Dank! – LearningToPython

Verwandte Themen