I think you need reset_index
for same index values and then comapare – for create new column is better use mask
or numpy.where
:
Also instead +
use |
because working with booleans.
df1 = df1.reset_index(drop=True) df2 = df2.reset_index(drop=True) df1['v_100'] = df1['choice'].mask(df1['choice'] != df2['choice'], (df1['choice'] + df2['choice']) * 0.5) df1['v_100'] = np.where(df1['choice'] != df2['choice'], (df1['choice'] | df2['choice']) * 0.5, df1['choice'])
Samples:
print (df1) v_100 choice 5 7 True 6 0 True 7 7 False 8 2 True print (df2) v_100 choice 4 1 False 5 2 True 6 74 True 7 6 True
df1 = df1.reset_index(drop=True) df2 = df2.reset_index(drop=True) print (df1) v_100 choice 0 7 True 1 0 True 2 7 False 3 2 True print (df2) v_100 choice 0 1 False 1 2 True 2 74 True 3 6 True df1['v_100'] = df1['choice'].mask(df1['choice'] != df2['choice'], (df1['choice'] | df2['choice']) * 0.5) print (df1) v_100 choice 0 0.5 True 1 1.0 True 2 0.5 False 3 1.0 True