My input data: df=pd.DataFrame({'ID':['A','B','C','D'], 'Group':['group1','group1','group2','group2'], 'Flag_1':[1,0,0,1], 'Flag_2':[1,1,0,1], 'Value':[30,40,60,70] }) I am trying to add up "Value" per group when flag is equal to 1. My expected output is: df_value_group=pd.DataFrame({ 'Flag_1 Sum':[1,1], 'Flag_2 Sum':[2,1], 'Value_1 Sum':[30,70], 'Value_2 Sum':[70,70]}, index=['group1','group2']) I have tried this but it throws me an AssertionError error primarly due to the latter two lambda function. df.groupby('Group').agg( **{ 'Flag_1 Sum': ('Flag_1','sum'), 'Flag_2 Sum': ('Flag_2','sum'), 'Value_1 Sum': ('Flag_1', lambda col: df.loc[col.eq(1), 'Value'].sum()), 'Value_2 Sum': ('Flag_2', lambda col: df.loc[col.eq(1), 'Value'].sum()) }) Continue reading...