Вы можете сначала объединить оба ваших кадра данных следующим образом:
df3 = pd.concat([df1, df2])
После этого вы можете использовать groupby agg для суммирования, а также лямбда-функцию для объединения списков
df3 = df3.groupby(['Company', 'Name', 'Product']).agg({'Price':sum, 'TransactionID': lambda x: [i for i in x]})
После этого вы получите желаемый результат:
Company Name Product Sum_price TransactionID
Company A Orange 10 [T0004]
Apple 30 [T0001,T0005]
Company B Orange 50 [T0003,T0006]
Grapes 20 [T0002]