es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Divide un valor en una columna de un Dataframe por el valor anterior en la misma columna.

Estoy trabajando con pandas y dataframe, y tengo una pregunta simple:

Tengo un dataframe (llamado “df”) como este:

index A B C
0 3 2 5
1 4 7 6
2 2 4 8

Necesito crear una columna adicional llamada “D”, donde debo tener la relación del valor de “C” con el valor anterior: el primer valor de la columna debe ser 5/0 (donde no sea posible dividir, se aceptará NaN o 0), el segundo valor debe ser 6/5, el tercer valor debe ser 8/6.

No puedo lograr que funcione. Estoy intentando aplicar una función lambda pero sin éxito cuando se trata de usar el “valor anterior”. (.shift() no está funcionando)

df['D'] = df['C'].apply(lambda x: x['C'] / ???)

¿Es este el camino correcto, o hay algo que me falta?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, puedes utilizar el método shift() de pandas, el cual desplaza el índice por el número de períodos especificado. Aquí está la solución a tu problema:

    df['D'] = df['C'] / df['C'].shift(1)
    df['D'].iloc[0] = float('NaN')
    

    La primera línea calcula la proporción de la columna C con el valor anterior y asigna el resultado a la columna D. La segunda línea reemplaza el primer valor de D con NaN ya que no hay valor previo para calcular la proporción.

    Puedes utilizar este código para agregar una nueva columna D al dataframe existente df con los valores de proporción requeridos.

Comments are closed.