es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo sumar valores en grupo para cada valor en otra columna?

Tengo un dataframe:

id   life_day   value
a1     1         10
a1     2         20
a1     3         10
a1     4         5
a1     5         5
a1     6         1
b2     1         7
b2     3         11
b2     4         10
b2     5         20

Quiero sumar los valores para cada id y life_day. Entonces, el resultado deseado es:

id   life_day   value
a1     1         10
a1     2         30
a1     3         40
a1     4         45
a1     5         50
a1     6         51
b2     1         7
b2     3         18
b2     4         28
b2     5         48

¿Cómo se hace eso? Intenté df.groupby('id').agg({'value': 'sum'}) pero da resultados incorrectos. No suma.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, se puede agrupar el dataframe por ambas columnas ‘id’ y ‘life_day’ utilizando la función groupby y luego aplicar la función cumsum a la columna ‘value’ del dataframe agrupado para obtener la suma acumulativa. El código para esto es el siguiente:

    df['value'] = df.groupby(['id', 'life_day'])['value'].cumsum()
    

    Esto actualizará la columna ‘value’ del dataframe original con las sumas acumuladas para cada combinación de ‘id’ y ‘life_day’.

    El dataframe resultante será el deseado:

       id  life_day  value
    0  a1         1     10
    1  a1         2     30
    2  a1         3     40
    3  a1         4     45
    4  a1         5     50
    5  a1         6     51
    6  b2         1      7
    7  b2         3     18
    8  b2         4     28
    9  b2         5     48
    

Comments are closed.