标签:Python与Excel,pandas
Python lambda函数,又称匿名函数,与我们使用def…语句创建的函数不同,可以命名函数,lambda函数不需要名称。当需要一个快速且不需要经常重复使用的(通常是一个小的)函数时,它非常有用。单独使用Lambda函数可能没有太多意义。lambda函数的价值在于它在哪里与另一个函数(例如map()或filter())一起使用。
lambda函数介绍
lambda函数:
- 不需要名字
- 可以接受任意数量的参数
- 仅返回1个表达式
让我们看一个普通def函数与lambda函数的示例。我们创建一个函数来计算一个值的平方。
图1
lambda是匿名函数。在上面的示例中,我为它指定了一个名称lambda_sq,但是lambda函数语法实际上不需要名称。
lambda 参数: 表达式
map()函数介绍
map()函数基本上对迭代器(例如列表或元组)中的每个项运行特定的函数。例如,计算1-10之间数字的平方。首先创建一个平方函数,它返回给定数字的平方。然后,创建一个包含从1到10的数字的列表。注意,下面的代码输出——a是一个map对象,它是一个迭代器,可以使用list(a)将其转换为一个列表。
图2
在本示例中,必须预先定义一个计算数字平方的函数。假设这个square()函数只被map函数使用一次,然后就不再使用了。在这种情况下,最好使用lambda函数来计算平方。下面是使用lambda函数的相同示例。
图3
filter()函数介绍
filter()函数类似于map(),然而,map()在一个迭代器上执行一个特定的函数,并返回该迭代器中的每个元素。而filter()只返回一个函数返回True的元素。让我们看一个例子,有一个包含数字1-20的列表,只想返回奇数。首先,我们创建一个包含1-20的值的列表。
图4
然后,让我们定义一个函数来检查输入是否为奇数,如果给定的数字为奇数,该函数将返回True。
图5
现在让我们先用map()函数试试,看看我们得到了什么。
图6
正如所料,map()函数接受is_odd(),并应用于每一项(1-20),返回的值是一个包含True或False的迭代器,这是is_odd()返回的值。
当我们使用filter()替换map()时,我们得到的是:
图7
同样,这应该是filter()函数“筛选”列表并返回is_odd()返回为True的元素。
了解了lambda、map和filter,下一步做什么?
pandas数据框架中的任何列(即pandas系列)都是迭代器,因此可以在pandas数据框架上使用上述相同的技术!后续我们将讲解如何创建一些复杂的计算列。
注:本文学习整理自pythoninoffice.com。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。