Это может быть то, что вы ищете.
# Generate sample data
df = pd.DataFrame([['AAA','CCC',25,14],['AAA','CCC',50,18],['AAA','DDD',10,20],['AAA','DDD',20,25]])
df.columns = ['sell','buy','sum','week']
#Generate second table
spec = pd.DataFrame([['CCC',21],['DDD',22]])
spec.columns = ['companyID','region']
# Merge the two dataframes
df = df.merge(spec, left_on='buy',right_on='companyID')
# Group by whatever columns you need, and take the mean
df = df.groupby(['sell','region'])['sum'].mean().reset_index()
# Pivot your data
df.pivot(index='sell', columns='region', values='sum')
выход
region 21 22
sell
AAA 37.5 15.0