[Python] Pandas: How to sum columns based on conditional of other column values?

Discussão em 'Python' iniciado por Stack, Abril 24, 2025.

  1. Stack

    Stack Membro Participativo

    I have the following pandas DataFrame.

    import pandas as pd
    df = pd.read_csv('filename.csv')

    print(df)

    dog A B C
    0 dog1 0.787575 0.159330 0.053095
    1 dog10 0.770698 0.169487 0.059815
    2 dog11 0.792689 0.152043 0.055268
    3 dog12 0.785066 0.160361 0.054573
    4 dog13 0.795455 0.150464 0.054081
    5 dog14 0.794873 0.150700 0.054426
    .. ....
    8 dog19 0.811585 0.140207 0.048208
    9 dog2 0.797202 0.152033 0.050765
    10 dog20 0.801607 0.145137 0.053256
    11 dog21 0.792689 0.152043 0.055268
    ....


    I create a new column by summing columns "A", "B", "C" as follows:

    df['total_ABC'] = df[["A", "B", "B"]].sum(axis=1)


    Now I would like to do this based on a conditional, i.e. if "A" < 0.78 then create a new summed column df['smallA_sum'] = df[["A", "B", "B"]].sum(axis=1). Otherwise, the value should be zero.

    How does one create conditional statements like this?

    My thought would be to use

    df['smallA_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if row['A'] < 0.78))


    However, this doesn't work and I'm not able to specify axis.

    How do you create a column based on the values of other columns?

    You could also do something like for each df['dog'] == 'dog2', create column dog2_sum, i.e.

    df['dog2_sum'] = df1.apply(lambda row: (row['A']+row['B']+row['C']) if df['dog'] == 'dog2'))


    but my approach is incorrect.

    Continue reading...

Compartilhe esta Página