[Python] Groupby and Aggregate based on condition

Discussão em 'Python' iniciado por Stack, Junho 10, 2025.

  1. Stack

    Stack Membro Participativo

    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...

Compartilhe esta Página