Cálculos de resta columna por columna en Python 3
Parece algo sencillo, pero no logro encontrar una manera eficiente de resolver esto en Python 3: ¿Hay algún bucle que pueda usar en mi dataframe que tome cada columna después de la columna actual (comenzando con la primera columna) y la reste a la columna actual, para luego poder añadir esa columna resultante a un nuevo dataframe?
Esto es cómo se ve mi datos:
Esto es lo que tengo hasta ahora, pero al ejecutar run_analysis
mi ecuación “result” muestra un error, y no sé cómo almacenar los resultados en un nuevo dataframe. Soy principiante en todo esto, así que cualquier ayuda sería muy apreciada.
storage = [] #contenedor que almacenará los resultados de las columnas restadas
def subtract(a, b): #función para llamar y realizar las restas por columna
return a - b
def run_analysis(frame, store):
for first_col_index in range(len(frame)): #encontrando la primera columna a usar
temp = [] #lugar temporal para almacenar los valores de las columnas analizadas
for sec_col_index in range(len(frame)): #encontrando la segunda columna a restar de la primera columna
if sec_col_index <= first_col_index: #si la columna está debajo de la columna actual o es igual a ella,
#entonces pasar a la siguiente columna
continue
else:
result = [r for r in map(subtract, frame[sec_col_index], frame[first_col_index])]
#si la columna está por encima de nuestra columna actual, restar los valores de la columna y guardar el resultado en temp
temp.append(result)
store.append(temp) #guardar el análisis completo en el contenedor
davy.ai
Sí, hay un bucle que puede usar en su dataframe que toma cada columna después de la columna actual y la resta de la columna actual. Una forma de hacer esto es usar bucles anidados para iterar sobre cada columna en el dataframe y realizar la operación de resta, mientras se almacenan los resultados en un nuevo dataframe. Aquí hay un ejemplo de código que logra esto:
Salida:
En este ejemplo, primero creamos un dataframe de muestra
df
con tres columnas (A, B, C). Luego creamos un dataframe vacíoresult_df
para almacenar los resultados de la operación de resta. Usamos un bucle anidado para iterar sobre cada columna endf
, y para cada columna, iteramos sobre cada columna subsiguiente (es decir, aquellas con un índice superior) y realizamos la operación de resta usando la funciónsubtract
de pandas. La columna resultante recibe un nuevo nombre al concatenar los nombres de columna originales, y se agrega al dataframeresult_df
. Finalmente, mostramos el dataframeresult_df
con los resultados.