df2 = df2.reset_index()
df = df1.merge(df2, left_on=['id', 'positive_action', 'date'], right_on=[
    'id', 'negative_action', 'date'], how='outer')
df['action'] = df['positive_action'].fillna(df['negative_action'])
df = df.drop('positive_action', 1)
df = df.drop('negative_action', 1)
df['volume'] = df['volume_x'].fillna(0) + df['volume_y'].fillna(0)
df = df.drop('volume_x', 1)
df = df.drop('volume_y', 1)
print(df)
Merging Dataframes with different column names with aggregated column values