2017-12-19 8 views
1

私は私がとDF2のIDのために、これらの値を置き換えたい変更値は

id value 
2  50 
5  30 

DF2別のデータフレームを持って

id value 
1  100 
2  100 
3  100 
4  100 
5  100 

DF1データフレームを持っていますdf1の値。 最終変性DF1:

id value 
1  100 
2  50 
3  100 
4  100 
5  30 

iはループでこれを実行します。私はdf2、時間(df1、ループ外)を変更します

値を変更するにはどうすればよいですか?

答えて

0

使用combine_firstが、両方DataFrame sの中idによる最初のset_index

お知らせ:df2id列が一意である必要があります。

df = df2.set_index('id').combine_first(df1.set_index('id')).reset_index() 
print (df) 
    id value 
0 1 100.0 
1 2 50.0 
2 3 100.0 
3 4 100.0 
4 5 30.0 
0

locベースのソリューション -

i = df1.set_index('id') 
j = df2.set_index('id') 

i.loc[j.index, 'value'] = j['value'] 
df2 = i.reset_index() 
df2 

    id value 
0 1 100 
1 2  50 
2 3 100 
3 4 100 
4 5  30