私はあなたが試合で使用combine_first
いけない値を追加します。必要ならば、eq
とで比較する必要があると思う:すべてのデータフレームで一つの列を比較する必要がある場合は
df1 = pd.DataFrame({'A':[1,2,3],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,6,5],
'E':[5,3,6],
'F':[1,4,3]})
print (df1)
A B C D E F
0 1 4 7 1 5 1
1 2 5 8 6 3 4
2 3 6 9 5 6 3
df2 = pd.DataFrame({'A':[1,2,1],
'B':[4,5,6],
'C':[7,8,9],
'D':[1,3,5],
'E':[5,3,6],
'F':[7,4,3]})
print (df2)
A B C D E F
0 1 4 7 1 5 7
1 2 5 8 3 3 4
2 1 6 9 5 6 3
を:
print (df1.eq(df2.A, axis=0))
A B C D E F
0 True False False True False True
1 True False False False False False
2 False False False False False False
print (df1.eq(df1.A, axis=0))
A B C D E F
0 True False False True False True
1 True False False False False False
2 True False False False False True
必要な場合同じ列D
:
df1.D = df1.loc[df1.D.eq(df2.D), 'D'].combine_first(df2.D)
print (df1)
A B C D E F
0 1 4 7 1.0 5 1
1 2 5 8 3.0 3 4
2 3 6 9 5.0 6 3
しかし、その後のみdf2
からdf1
のD
に列D
を割り当てることが容易である:
df1.D = df2.D
print (df1)
A B C D E F
0 1 4 7 1 5 1
1 2 5 8 3 3 4
2 3 6 9 5 6 3
インデックスが異なる場合は、使用可能性がnumpy array
への変換列のvalues
です:
df1.D = df1.D.values
print (df1)
A B C D E F
0 1 4 7 1 5 1
1 2 5 8 6 3 4
2 3 6 9 5 6 3
をチェックしなければならない場合は、 'DF1 [DF1!= DF2] = new_value'または類似 – EdChum
を行うことができるはず私はへの道があると確信していますあなたが必要とするものをしなさい。問題はそれが何であるかを説明することです。 df1の最初の列とdf2の2番目の列が必要なのかどうかわかりません。 df2は常に新しい価値の源ですか?どのように動作するべきかの手作りの例を使って投稿を編集することで、混乱を修正することができます。 – piRSquared