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?
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:La primera línea calcula la proporción de la columna
C
con el valor anterior y asigna el resultado a la columnaD
. La segunda línea reemplaza el primer valor deD
conNaN
ya que no hay valor previo para calcular la proporción.Puedes utilizar este código para agregar una nueva columna
D
al dataframe existentedf
con los valores de proporción requeridos.