Given these two data frames:
>>> df1 = pd.DataFrame({\'c1\':[\'a\',\'a\',\'b\',\'b\'], \'c2\':[\'x\',\'y\',\'x\',\'y\'], \'val\':0})
>>> df
Yes, take a look at combine_first or update. For example:
>>> df1['val'] = df2['val'].combine_first(df1['val'])
>>> df1
Out[26]:
c1 c2 val
0 a x 12
1 a y 31
2 b x 14
3 b y 0
EDIT: to combine according to c1 and c2 ignoring the current index:
>>> df1['val'] = df2.set_index(['c1','c2'])['val'].combine_first(df1.set_index(['c1','c2'])['val']).values
>> df1
Out[25]:
c1 c2 val
0 a x 12
1 a y 31
2 b x 0
3 b y 14