2017-08-01 30 views

Antwort

1

Sie können auf alle Spalten einen linken join der beiden Datenrahmen haben, geben Sie indicator=True so behält das Ergebnis eine _merge Spalte, die anzeigt, wenn die Zeile in einem einem von B übereinstimmt, und die zweite Spalte entsprechend aktualisieren:

A_ = A.merge(B.drop_duplicates(), indicator=True, how="left") 

# if the row comes from left only then don't make change, otherwise update the second column 
# with first column value 
A_[1] = A_[1].where(A_._merge == "left_only", A_[0]) 
A_.drop('_merge', 1) 

# 0 1 
#0 d e 
#1 d d 
#2 a a 

A = pd.DataFrame([['d','e'],['d','c'],['a','c']]) 
B = pd.DataFrame([['a','c'],['d','c']]) 
+0

es zeigte mir unten: merge() hat ein unerwartetes Schlüsselwortargument "Indikator" – andrew

+0

Welche Pandas Version benutzt du? Der Parameter wird zu "0.17.0" hinzugefügt. – Psidom

+0

Looks A_.drop ('_ merge', 1) funktioniert nicht – andrew

Verwandte Themen