"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo calcular una columna en un marco de datos usando valores de fila anteriores con `apply()`?

¿Cómo calcular una columna en un marco de datos usando valores de fila anteriores con `apply()`?

Publicado el 2024-11-13
Navegar:203

How to Calculate a Column in a DataFrame Using Previous Row Values with `apply()`?

Iterando a través de DataFrames con consideraciones de valor anteriores usando apply()

En pandas, la función apply() se emplea comúnmente para aplicar una función a cada fila de un DataFrame . Sin embargo, surgen desafíos cuando el valor de la fila anterior también se calcula usando el mismo método apply().

Considere lo siguiente Marco de datos:

Index_DateABCD
2015-01-311010NaN10
2015-02-0123NaN22
2015-02-0210 60NaN2 80
2015-02-0310100NaN250

El El objetivo es derivar la columna C:

  • Para el 31 de enero de 2015, configúrelo en el valor de D.
  • Para las filas siguientes, multiplique el valor de la fila anterior de C por el valor de fila actual de A y agregarlo al valor de fila actual de B.

Solución:

Para lograr esto, primero establecemos el valor inicial de C para 2015-01-31:

df.loc[0, 'C'] = df.loc[0, 'D']

Luego, iteramos a través del resto filas y actualice los valores de C con los cálculos deseados:

for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A']   df.loc[i, 'B']

El DataFrame final después de estos operaciones:

Index_DateABCD
2015-01-311010101 0
2015-02-01232322
2015-02-021060290280
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3