Предполагая, что df1
и df2
- ваши исходные кадры данных:
In [345]: common_values = pd.concat([df2.Col3, df2.Col4])
In [346]: def f(x):
...: return pd.Series({'Col2': ','.join(map(str, x.Col2)),
...: 'Total': x.Total.sum()
...: + df2[(df2.Col3.isin(x.Col2) | df2.Col4.isin(x.Col2))]['Total'].sum()})
...:
In [347]: df_totals = df1[df1.Col2.isin(common_values)].groupby('Col1').apply(f)
In [348]: df_totals
Out[348]:
Col2 Total
Col1
A 788,888,999,1212 39
B 700,701,702 50