Использование:
print (d1)
col1 col3
0 1 6
1 2 3
print (d2)
col1 col2
0 3 2
2 5 4
Ваше решение - добавьте groupby
по именам разделенных столбцов и совокупности sum
:
df = pd.merge(d1, d2, how='inner', left_index=True, right_index=True)
df = df.groupby(lambda x: x.split('_')[0], axis=1).sum()
#alternative
#df = df.groupby(df.columns.str.split('_').str[0], axis=1).sum()
Здесь проще использовать concat
на join='inner'
с sum
по столбцам:
df = pd.concat([d1, d2], axis=1, join='inner').sum(level=0, axis=1)
print (df)
col1 col3 col2
0 4 6 2