在具有多个 if 语句的 Pandas Lambda 函数中使用 Apply
在本文中,我们将了解如何在 pandas 数据框中应用多个带有 lambda函数的 if 语句。有时在现实世界中,我们需要对数据框应用多个条件语句来准备数据以进行更好的分析。
我们通常使用 lambda 函数在数据帧上应用任何条件,
Syntax: lambda arguments: expression
An anonymous function which we can pass in instantly without defining a name or any thing like a full traditional function.
当我们使用这个 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函数非常简单。
例如,
syntax: df[ ‘Result’ ] = df[ ‘Maths’ ].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)
输出:
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() 方法调用该函数。
syntax: def conditions():
…conditions
在下面的程序中,我们根据数学分数对学生进行分类。我们需要对数学特别班的学生进行分类。现在我们将把超过 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 语句。