En este artículo, vamos a ver cómo aplicar varias sentencias if con la función lambda en un marco de datos de pandas . A veces, en el mundo real, necesitaremos aplicar más de una declaración condicional a un marco de datos para preparar los datos para un mejor análisis.
Normalmente usamos funciones lambda para aplicar cualquier condición en un marco de datos,
Sintaxis: argumentos lambda: expresión
Una función anónima que podemos pasar instantáneamente sin definir un nombre ni nada parecido a una función tradicional completa.
Mientras usamos esta función lambda, estamos limitados con una sola condición y otra condición. No podemos agregar múltiples sentencias if como el código python real. Ahora podemos romper esas limitaciones y ver cómo agregar varias declaraciones if en la función lambda.
Creando Dataframe para demostración:
Python3
# Importing the library import pandas as pd # dataframe df = pd.DataFrame({'Name': ['John', 'Jack', 'Shri', 'Krishna', 'Smith', 'Tessa'], 'Maths': [5, 3, 9, 10, 6, 3]}) print(df)
Producción:
Name Maths 0 John 5 1 Jack 3 2 Shri 9 3 Krishna 10 4 Smith 6 5 Tessa 3
Si necesita clasificar a los estudiantes en función de sus calificaciones como aprobado o reprobado, es bastante sencillo hacerlo con una función lambda.
Por ejemplo,
sintaxis: df[ ‘Resultado’ ] = df[ ‘Matemáticas’ ].apply( lambda x: ‘Pass’ if x>=5 else ‘Fail’ )
Python3
# Import the library import pandas as pd # dataframe df = pd.DataFrame({'Name': ['John', 'Jack', 'Shri', 'Krishna', 'Smith', 'Tessa'], 'Maths': [5, 3, 9, 10, 6, 3]}) # Adding the result column df['Result'] = df['Maths'].apply(lambda x: 'Pass' if x>=5 else 'Fail') print(df)
Producción:
Name Maths Result 0 John 5 Pass 1 Jack 3 Fail 2 Shri 9 Pass 3 Krishna 10 Pass 4 Smith 6 Pass 5 Tessa 3 Fail
Adición de varias declaraciones If:
Ahora, para agregar varias declaraciones if a la función lambda, no podemos agregarlas directamente en una línea como en el ejemplo anterior. Si agregamos más de una declaración if o si agregamos una declaración elif, arrojará un error.
Python3
df['Maths_spl Class'] = df["maths"].apply( lambda x: "No Need" if x>=5 elif x==5 "Hold" else "Need")
Producción:
df['Maths_spl Class'] = df["maths"].apply(lambda x: "No Need" if x>=5 elif x==5 "Hold" else "Need") ^ SyntaxError: invalid syntax
Para resolver esto, podemos agregar las declaraciones if a una función tradicional y llamar a la función con el método apply() en el marco de datos.
sintaxis: def condiciones():
…condiciones
En el siguiente programa, estamos clasificando a los estudiantes de acuerdo con las notas de matemáticas. Necesitamos clasificar a los estudiantes para la clase especial de matemáticas. Ahora vamos a clasificar a los alumnos con más de 8 puntos como “No necesita”, ya los alumnos con menos de 5 puntos como “Necesita” y vamos a dejar en suspenso el resto de decisiones del alumno.
Python3
# Import the library import pandas as pd # dataframe df = pd.DataFrame({'Name': ['John', 'Jack', 'Shri', 'Krishna', 'Smith', 'Tessa'], 'Maths': [5, 3, 9, 10, 6, 3]}) # Defining all the conditions inside a function def condition(x): if x>8: return "No need" elif x>=5 and x<=7: return "Hold decision" else: return 'Need' # Applying the conditions df['Maths_Spl Class'] = df['Maths'].apply(condition) print(df)
Producción:
Name Maths Maths_Spl Class 0 John 5 Hold decision 1 Jack 3 Need 2 Shri 9 No need 3 Krishna 10 No need 4 Smith 6 Hold decision 5 Tessa 3 Need
Entonces, como puede ver, hemos pasado con éxito varias declaraciones if en el marco de datos.
Publicación traducida automáticamente
Artículo escrito por sanjaysdev0901 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA