Не лучший подход, но вы можете попробовать это: определите функцию для расчета и примените ее к исходному df
def rate_of_increase(x):
amt_2019=x[x['Year']==2019]['salesAmount']
amt_2018=x[x['Year']==2018]['salesAmount']
rate_of_increase = ((int(amt_2019) -int(amt_2018)) / int(amt_2018)) * 100
return (rate_of_increase)
и примените к вашему df
для создания нового кадра данных
df2=pd.DataFrame()
df2[['district' ,'item' ,'rate']]=df.groupby(['district', 'item']).apply(lambda x: rate_of_increase(x)).reset_index()
Вывод:
district item rate
0 Arba coil 500.0
1 Arba hat 50.0
2 Arba pen -85.0
3 Cebu oil -40.0
4 Cebu pen 1100.0