2016-09-06 8 views
2

Ich versuche, eine neue Spalte (zwei Spalten in der Tat) in einem Pandas-Datenrahmen, mit den Daten kommt aus anderen Datenrahmen.Hinzufügen neuer Spalten zu Pandas Dataframe basierend auf anderen Datenrahmen

Ich habe die folgenden zwei Datenrahmen (sie sind beispielsweise für diesen Zweck, die ursprünglichen Datenrahmen sind so viel größer):

In [116]: df0 
Out[116]:  
    A B C 
0 0 1 0 
1 2 3 2 
2 4 5 4 
3 5 5 5 


In [118]: df1 
Out[118]: 
    A D E 
0 2 7 2 
1 6 5 5 
2 4 3 2 
3 0 1 0 
4 5 4 6 
5 0 1 0 

Und ich will einen neuen Datenrahmen haben (oder hinzugefügt zu df0, was auch immer) , as:

df2: 
    A B C D E 
0 0 1 0 1 0 
1 2 3 2 7 2 
2 4 5 4 3 2 
3 5 5 5 4 6 

wie man in dem resultierenden Datenrahmen sehen kann, ist die Zeile mit A nicht vorhanden = 6, die in df1 vorhanden ist, aber nicht in df0. Auch die Zeile mit A = 0 ist in df1 dupliziert, nicht aber im Ergebnis df2.

Eigentlich habe ich Probleme mit der Auswahlmethode. Ich kann dies tun:

df1.loc[df1['A'].isin(df0['A'])] 

Aber ich bin nicht sicher, wie das Teil anwenden von halten mit eindeutigen Daten (nicht vergessen, dass df1 können dupliziert Daten enthalten) und fügen Sie die zwei Spalten nach DF2 Datensatz (oder fügen Sie zu df0). Ich habe hier suchen und ich weiß nicht, wie man etwas wie groupby oder sogar Karte anwenden.

Irgendeine Idee?

Danke!

Antwort

2

Dies ist eine grundlegende Anwendung von merge (docs):

import pandas as pd 
df2 = pd.merge(df0,df1, left_index=True, right_index=True) 
+0

Ich denke, es sein sollte: 'pd.merge (df0, df1, auf = [ 'A'])' – MaxU

Verwandte Themen