Función de sum acumulativa en el dataframe de Pandas

Estoy intentando capturar una sum acumulativa “stream” dada una serie de montos de período.

Ver ejemplo:

introduzca la descripción de la imagen aquí

df = df[1:4].cumsum() # this doesn't return the desired result 

Estás buscando el parámetro de axis . Muchas funciones de Pandas toman este argumento para aplicar una operación en las columnas o en las filas. Use axis=0 para aplicar la fila y axis=1 para aplicar la columna. Esta operación en realidad está atravesando las columnas, por lo que desea axis=1 .

df.cumsum(axis=1) por sí mismo funciona en su ejemplo para producir la tabla de salida.

 In [3]: df.cumsum(axis=1) Out[3]: 1 2 3 4 10 16 30 41 61 51 13 29 40 50 13 11 30 45 61 321 12 27 37 52 

Sin embargo, sospecho que estás interesado en restringirte a un rango específico de columnas. Para hacer eso, puedes usar .loc con las tags de columna (cadenas en la mía).

 In [4]: df.loc[:, '2':'3'].cumsum(axis=1) Out[4]: 2 3 10 14 25 51 16 27 13 19 34 321 15 25 

.loc está basado en tags e incluye los límites. Si desea obtener más información sobre la indexación en Pandas, consulte los documentos .

Desea que axis=1 sume a través de las filas.

 df.cumsum(axis=1) 

Nota al margen [1:4] hacer [1:4] corta las filas de manera predeterminada (es decir, semántica de tipo numpy o lista). Si desea seleccionar columnas por etiqueta, use df.loc[:, 1:4]