我有兩個數據幀包含(一些)公共列(A,B,C),但排序不同,並且C的值不同。基於兩個熊貓數據幀之間的多個條件進行選擇創建一個新列
我想用第二個數據框中的'C'值替換第一個數據框中的'C'值。
我可以這樣創造的玩具例子:
A = [ 1, 1, 1, 2, 2, 2, 3, 3, 3 ]
B = [ 'x', 'y', 'z', 'x', 'y', 'y', 'x', 'x', 'x' ]
C = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i' ]
df1 = pd.DataFrame({ 'A' : A,
'B' : B,
'C' : C })
A.reverse()
B.reverse()
C = [ c.upper() for c in reversed(C) ]
df2 = pd.DataFrame({ 'A' : A,
'B' : B,
'C' : C })
我想,這樣它看起來像這樣更新DF1 - 即它從DF2的「C」值:
A = [ 1, 1, 1, 2, 2, 2, 3, 3, 3 ]
B = [ 'x', 'y', 'z', 'x', 'y', 'y', 'x', 'x', 'x' ]
C = [ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' ]
我已經試過:
df1['C'] = df2[ (df2['A'] == df1['A']) & (df2['B'] == df1['B']) ]['C']
但是,這並不工作,因爲,我認爲,A和B的順序是不同的。