2016-12-29 9 views
2

Ich habe zwei Datenframes, ich muss den ersten Datenframe verwenden, um dem zweiten Datenframe eine neue Spalte hinzuzufügen, die einen Wert TRUE hat, wenn sie im ersten Datenframe vorhanden ist FALSE.Spalte zu Datenframe basierend auf Werten aus einem anderen Datenframe hinzufügen

Der erste Datenrahmen hat Staat und Region Namen der Universität Städte in USA

State RegionName 
    0 Alabama Auburn 
    1 Alabama Florence 
    2 Alabama Jacksonville 
    3 Illinois Chicago 

Die zweite Datenrahmen Wachstumsraten pro Quartal hat. Es ist indiziert für staatliche und Region

      2008q3   2008q4 
State  RegionName     
Alabama  Jacksonville 499766.666667 487933.333333 
California Los Angeles 469500.000000 443966.666667 
Illinois Chicago  232000.000000 227033.333333 

So ist der Ausgangsdatenrahmen

      2008q3   2008q4   univ_town 
State  RegionName     
Alabama  Jacksonville 499766.666667 487933.333333 TRUE 
California Los Angeles 469500.000000 443966.666667 FALSE 
Illinois Chicago  232000.000000 227033.333333 TRUE 

Jede Hilfe sehr viel

wird
+1

Dieses von der Coursera Einführung in die Daten Wissenschaft ist ... Ich habe gerade diesen Kurs. Sie müssen nicht das tun, was Sie beschreiben, Sie können einfach eine innere Zusammenführung durchführen, um einen university_towns-Datenrahmen zu erhalten, und dann den Unterschied zwischen Ihren Datenfeldern all_towns und university_towns ermitteln. Schau dir die pandas index.difference Funktion an – Celebrian

+0

Entschuldigung, ich hätte erwähnen sollen, dass ich das schon gemacht habe, aber ich habe versucht zu sehen, ob es eine pythonische Lösung gibt. –

+0

Ich verstehe, weshalb ich die Antwort upvoted. Aber meine Lösung als Kommentar hinzugefügt, falls Sie eine schnelle Lösung benötigen :-) – Celebrian

Antwort

4

ein von verschiedenen Möglichkeiten, geschätzt werden zu tun wäre, Index.isin zu verwenden Methode, um zu überprüfen, ob die Indexschlüssel, die dem Multiindex DF2 entsprechen, als entsprechende Spalten in DF1 über beide Ebenen vorhanden sind.

Dann np.where verwenden, um die Zuweisungsoperation (Wahre) nach dem & Zustand der Booleschen Maske zu tun erstellt erfüllt wird, sonst (Falsch).

cond1 = df2.index.isin(df1['State'], level=0) # Check level=0 and df1['State'] 
cond2 = df2.index.isin(df1['RegionName'], level=1) # Check level=1 and df1['RegionName'] 

df2.assign(univ_town=np.where(cond1 & cond2, 'TRUE', 'FALSE')) 

enter image description here

Verwandte Themen