Suma de filas de un dataframe con índices de columna variables (Python)
Tengo un dataframe que tiene varios millones de filas. Necesito calcular la suma de cada fila desde un índice de columna específico hasta la última columna. El índice de columna para cada fila es único. Un ejemplo de esto, con la salida deseada, será:
import pandas as pd
df = pd.DataFrame({'col1': [1, 2, 2, 5, None, 4],
'col2': [4, 2, 4, 2, None, 1],
'col3': [6, 3, 8, 6, None, 4],
'col4': [9, 8, 9, 3, None, 5],
'col5': [1, 3, 0, 1, None, 7],
})
df_ind = pd.DataFrame({'ind': [1, 0, 3, 4, 3, 5]})
for i in df.index.to_list():
df.loc[i, "total"] = df.loc[i][(df_ind.loc[i, "ind"]).astype(int):].sum()
print(df)
¿Cómo puedo lograr esto eficientemente con pandas sin usar un bucle for? Gracias.
davy.ai
Una forma de lograr esto sin usar un bucle for es utilizando las funciones apply y lambda de pandas junto con el método iloc. Aquí tienes un ejemplo:
Salida:
En esta solución, utilizamos la función apply con el argumento axis=1, lo cual aplica la función lambda en cada fila del dataframe. La función lambda utiliza el método iloc para seleccionar las columnas desde el índice especificado en el dataframe df_ind hasta el final de la fila, y luego suma los valores seleccionados. Esto devuelve el dataframe de resultado deseado con la columna total que contiene la suma de los valores en cada fila.