📜  在具有多个 if 语句的 Pandas Lambda 函数中使用 Apply

📅  最后修改于: 2022-05-13 01:54:20.440000             🧑  作者: Mango

在具有多个 if 语句的 Pandas Lambda 函数中使用 Apply

在本文中,我们将了解如何在 pandas 数据框中应用多个带有 lambda函数的 if 语句。有时在现实世界中,我们需要对数据框应用多个条件语句来准备数据以进行更好的分析。

我们通常使用 lambda 函数在数据帧上应用任何条件,

当我们使用这个 lambda函数时,我们仅限于一个条件和一个 else 条件。我们不能像真正的Python代码那样添加多个 if 语句。现在我们可以打破这些限制,看看如何在 lambda函数中添加多个 if 语句。

为演示创建数据框:

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)


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)


Python3
df['Maths_spl Class'] = df["maths"].apply(
  lambda x: "No Need" if x>=5 elif x==5 "Hold" else "Need")


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)


输出:

Name  Maths
0     John      5
1     Jack      3
2     Shri      9
3  Krishna     10
4    Smith      6
5    Tessa      3

如果您需要根据学生的分数将他们分类为通过或失败,则使用 lambda函数非常简单。

例如,

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)

输出:

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

添加多个 If 语句:

现在,要向 lambda函数添加多个 if 语句,我们不能像前面的示例那样直接在一行中添加它。如果我们添加多个 if 语句或添加一个 elif 语句,则会引发错误。

Python3

df['Maths_spl Class'] = df["maths"].apply(
  lambda x: "No Need" if x>=5 elif x==5 "Hold" else "Need")

输出:

df['Maths_spl Class'] = df["maths"].apply(lambda x: "No Need" if x>=5 elif x==5 "Hold" else "Need")
                                                                             ^
SyntaxError: invalid syntax

为了解决这个问题,我们可以将 if 语句添加到传统函数中,并使用数据帧中的 apply() 方法调用该函数。

在下面的程序中,我们根据数学分数对学生进行分类。我们需要对数学特别班的学生进行分类。现在我们将把超过 8 分的学生分类为“不需要”,将低于 5 分的学生分类为“需要”,我们将保留学生的其余决定。

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)

输出:

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

如您所见,我们已经成功地在数据框中传递了多个 if 语句。