将 Lambda 函数应用于 Pandas DataFrame
- Lambda 函数
-
使用
DataFrame.assign()
方法在单个列上应用 Lambda 函数 -
使用
DataFrame.assign()
方法在多列上应用 Lambda 函数 -
使用
DataFrame.apply()
方法在单行上应用 Lambda 函数 - 通过应用 Lambda 函数过滤数据
-
通过应用 Lambda 函数来使用
map()
函数 -
通过应用 Lambda 函数使用
if-else
语句 - 结论
lambda
函数解决了 Pandas python 中的各种数据科学问题。我们可以在 pandas DataFrame
中的行和列上应用 lambda 函数。
我们将在本文中探讨如何将 lambda 函数应用于 pandas DataFrame
。
lambda 函数在 pandas DataFrame
上有多种应用,例如 filter()
、map()
和 条件语句
,我们将在本文中通过一些示例进行解释。
Lambda 函数
Lambda 函数包含一个表达式。
Lambda
函数是一个小函数,也可以用作匿名函数,这意味着它不需要任何名称。lambda
函数对于用更少的代码解决小问题很有用。
以下语法用于在 pandas DataFrame
上应用 lambda 函数:
dataframe.apply(lambda x: x + 2)
使用 DataFrame.assign()
方法在单个列上应用 Lambda 函数
dataframe.assign()
方法将 Lambda 函数应用于单个列。让我们举个例子。
在下面的示例中,我们在 Students Marks
列上应用了 lambda 函数。应用 Lambda 函数后,计算学生百分比并将其存储在新的百分比
列中。
请参阅以下实现以在 Pandas DataFrame
中的单个列上应用 lambda 函数。
示例代码:
import pandas as pd
# initialization of list
students_record = [
["Samreena", 900],
["Mehwish", 750],
["Asif", 895],
["Mirha", 800],
["Affan", 850],
["Raees", 950],
]
# pandas dataframe creation
dataframe = pd.DataFrame(students_record, columns=["Student Names", "Student Marks"])
# using Lambda function
dataframe1 = dataframe.assign(Percentage=lambda x: (x["Student Marks"] / 1000 * 100))
# display dataframe
print(dataframe1)
输出:
Student Names Student Marks Percentage
0 Samreena 900 90.0
1 Mehwish 750 75.0
2 Asif 895 89.5
3 Mirha 800 80.0
4 Affan 850 85.0
5 Raees 950 95.0
使用 DataFrame.assign()
方法在多列上应用 Lambda 函数
我们还可以使用 Pandas DataFrame
中的 dataframe.assign()
方法将 Lambda 函数应用于多个列。
例如,我们有四列 Student Names
、Computer
、Math
和 Physics
。我们在 Computer
、Math
和 Physics
等多个主题列上应用了一个 Lambda 函数来计算存储在 Marks_Obtained
列中的获得的分数。
实现以下示例。
示例代码:
import pandas as pd
# nested list initialization
values_list = [
["Samreena", 85, 75, 100],
["Mehwish", 90, 75, 90],
["Asif", 95, 82, 80],
["Mirha", 75, 88, 68],
["Affan", 80, 63, 70],
["Raees", 91, 64, 90],
]
# pandas dataframe creation
df = pd.DataFrame(values_list, columns=["Student Names", "Computer", "Math", "Physics"])
# applying Lambda function
dataframe = df.assign(
Marks_Obtained=lambda x: (x["Computer"] + x["Math"] + x["Physics"])
)
# display dataframe
print(dataframe)
输出:
Student Names Computer Math Physics Marks_Obtained
0 Samreena 85 75 100 260
1 Mehwish 90 75 90 255
2 Asif 95 82 80 257
3 Mirha 75 88 68 231
4 Affan 80 63 70 213
5 Raees 91 64 90 245
使用 DataFrame.apply()
方法在单行上应用 Lambda 函数
dataframe.apply()
方法将 Lambda 函数应用于单行。
例如,我们将 lambda 函数应用于单行 axis=1
。使用 lambda 函数,我们将每个人的月收入
增加了 1000。
示例代码:
import pandas as pd
df = pd.DataFrame(
{
"ID": [1, 2, 3, 4, 5],
"Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
"Age": [20, 25, 15, 10, 30],
"Monthly Income": [4000, 6000, 5000, 2000, 8000],
}
)
df["Monthly Income"] = df.apply(lambda x: x["Monthly Income"] + 1000, axis=1)
print(df)
输出:
ID Names Age Monthly Income
0 1 Samreena 20 5000
1 2 Asif 25 7000
2 3 Mirha 15 6000
3 4 Affan 10 3000
4 5 Mahwish 30 9000
通过应用 Lambda 函数过滤数据
我们还可以通过应用 Lambda 函数来过滤所需的数据。
filter()
函数采用 pandas 系列和一个 lambda 函数。Lambda 函数适用于过滤给定系列后返回特定结果的 pandas 系列。
在下面的示例中,我们在 Age
列上应用了 lambda 函数并过滤了 25 岁以下的人的年龄。
示例代码:
import pandas as pd
df = pd.DataFrame(
{
"ID": [1, 2, 3, 4, 5],
"Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
"Age": [20, 25, 15, 10, 30],
"Monthly Income": [4000, 6000, 5000, 2000, 8000],
}
)
print(list(filter(lambda x: x < 25, df["Age"])))
输出:
[20, 15, 10]
通过应用 Lambda 函数来使用 map()
函数
我们可以使用 map()
和 lambda 函数。
lambda 函数应用于系列以根据输入对应关系映射系列。此功能对于用其他值替换或替换系列很有用。
当我们使用 map()
函数时,输入大小将等于输出大小。要了解 map()
函数的概念,请参阅以下源代码实现。
示例代码:
import pandas as pd
df = pd.DataFrame(
{
"ID": [1, 2, 3, 4, 5],
"Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
"Age": [20, 25, 15, 10, 30],
"Monthly Income": [4000, 6000, 5000, 2000, 8000],
}
)
df["Monthly Income"] = list(map(lambda x: int(x + x * 0.5), df["Monthly Income"]))
print(df)
输出:
ID Names Age Monthly Income
0 1 Samreena 20 6000
1 2 Asif 25 9000
2 3 Mirha 15 7500
3 4 Affan 10 3000
4 5 Mahwish 30 12000
通过应用 Lambda 函数使用 if-else
语句
我们还可以使用 lambda 函数对 pandas dataframes
应用条件语句。
在以下示例中,我们在 lambda 函数中使用了条件语句。我们将条件应用于 Monthly Income
列。
如果月收入大于等于 5000,在 Category
栏内添加 Stable
;否则,添加 UnStable
。
示例代码:
import pandas as pd
df = pd.DataFrame(
{
"ID": [1, 2, 3, 4, 5],
"Names": ["Samreena", "Asif", "Mirha", "Affan", "Mahwish"],
"Age": [20, 25, 15, 10, 30],
"Monthly Income": [4000, 6000, 5000, 2000, 8000],
}
)
df["Category"] = df["Monthly Income"].apply(
lambda x: "Stable" if x >= 5000 else "UnStable"
)
print(df)
输出:
ID Names Age Monthly Income Category
0 1 Samreena 20 4000 UnStable
1 2 Asif 25 6000 Stable
2 3 Mirha 15 5000 Stable
3 4 Affan 10 2000 UnStable
4 5 Mahwish 30 8000 Stable
结论
我们实现了在 Pandas DataFrame
上应用 Lambda 函数的各种方法。我们已经看到如何使用 dataframe.assign()
和 dataframe.apply()
方法在行和列上应用 lambda 函数。
我们在 pandas DataFrame
系列上演示了 lambda 函数的不同应用,例如 filter()
函数、map()
函数、条件语句等。