我的输入数据:
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]
})
当标志等于 1 时,我尝试将每个组的“值”相加。我的预期输出是:
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'])
我尝试过这个但是它抛出了一个 AssertionError 错误,主要是由于后两个 lambda 函数。
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())
})