Uso de las funciones Apply en Pandas Lambda con múltiples declaraciones if

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *