Python – Agrupación y aplicación de la función de suma de filas
Tengo un dataframe df
Quiero iterar cada grupo de ID y dividir el valor de la fila por la suma del grupo, para obtener finalmente la columna B.
Intenté escribir una función propia con un comando apply pero siempre obtengo un error.
¿Alguna idea? ¿Puedo escribir esto en una clase y método?
davy.ai
Para resolver el problema, puedes modificar y simplificar la función
row_sum
de la siguiente manera:Esta función toma cada grupo del DataFrame, calcula la suma de la columna ‘A’ para cada grupo, divide cada valor de ese grupo por su suma y finalmente agrega una nueva columna ‘B’ con el resultado. Devuelve el grupo modificado.
Luego puedes usar el método
apply
en el DataFrame agrupado para aplicar esta función a cada grupo:Esto devolverá la salida deseada:
También podrías escribir una clase con un método para realizar esta tarea, de la siguiente manera:
Esta clase toma un DataFrame en su constructor y tiene un método
row_sum
que realiza la misma tarea que la funciónrow_sum
definida anteriormente. Puedes crear una instancia de la clase y llamar a su métodorow_sum
para obtener el DataFrame modificado:Obtendrás la misma salida que antes. Este enfoque puede ser útil si necesitas realizar esta tarea varias veces en diferentes DataFrames.