Crear una nueva columna con valores de otra columna basado en una condición.
Tengo un dataframe:
A B Valor FY
1 5 a 2020
2 6 b 2020
3 7 c 2021
4 8 d 2021
Quiero crear una columna ‘prev_FY’ que mire la columna ‘valor’ y el año anterior y complete la fila del año actual en la columna FY. Mi resultado deseado es:
A B Valor FY prev_FY
1 5 a 2020
2 6 b 2020
3 7 c 2021 a
4 8 d 2021 b
Intenté usar la función pivottable
pero no funciona ya que los valores permanecen iguales correspondientes al FY. La función SHIFT
no es factible ya que tengo millones de filas.
davy.ai
Para obtener la salida deseada, podemos utilizar declaraciones condicionales y varias columnas para crear la nueva columna ‘prev_FY’.
En primer lugar, necesitamos ordenar el marco de datos en orden ascendente según la columna ‘FY’. Luego, podemos crear una nueva columna ‘temp’ que almacenará los valores de la columna ‘value’ de la fila anterior. Esto se puede hacer utilizando la función
shift()
en pandas.A continuación, podemos crear la columna ‘prev_FY’ verificando si el valor de ‘FY’ es igual al valor de ‘FY’ de la fila anterior. Si es así, podemos rellenar la columna ‘prev_FY’ con el valor de la columna ‘temp’. De lo contrario, podemos dejarla vacía.
Aquí está el código para lograr esto:
Esto nos dará el marco de datos de salida deseado con la columna ‘prev_FY’ poblada correctamente.