What they are and how to use Lambda expressions in Python
By: Borja Uría
Tags: Python, Data Cleaning, Lambda Function, Python Programming

Definition of Lambda

In Python, a lambda function refers to a small anonymous function. We call them “anonymous functions” because technically they have no name.

Unlike a normal function, we do not define it with the standard keyword def that we use in Python. Instead, Lambda functions are defined as a line that executes a single expression. These types of functions can take any number of arguments, but can only have one expression.

Basic syntax

All Lambda functions in Python have exactly the same syntax:

#I write p1 and p2 as parameters 1 and 2 of the function.

lambda p1, p2: expression

As I can best explain it is by showing you a basic example, let’s see a normal function and an example of Lambda:

#Here we have a function created to add up.

def sum(x,y):

return(x + y) #Here we have a lambda function that also adds up.

lambda x,y : x + y #In order to use it we need to save it in a variable.

sum_two = lambda x,y : x + y

As with the list comprehensions, what we’ve done is write the code in one line and clean up the unnecessary syntax.

Instead of using def to define our function, we have used the keyword lambda ; then we write x, y as function arguments, and x + y as expression. In addition, the keyword return is omitted, further condensing the syntax.

Finally, and although the definition is anonymous, we store it in the variable sum_two to be able to call it from any part of the code, otherwise we could only use it in the line where we define it.

Lambdas Apply

I want to give you some ideas of where the Lambdas could be applied. Below I have created some examples applying Lambdas for different purposes. So you can better understand how they work.

Lambda in Pandas DataFrame with the apply() method

I think we can apply a Lambda function to data cleaning in Pandas with the apply() method, something that I think can be useful to avoid creating a loop that goes through the whole DataFrame:

#import pandas and numpy to create a DataFrame

import pandas as pd

import numpy as np #created a DataFrame with two columns, Celsius and Kelvin, both with equal data

data = {'Celsius': [22, 36, 20, 26, 30, 38],

'Kelvin': [22, 36, 20, 26, 30, 38]} #created the DataFrame with its index and Celsius and Kelvin columns

df = pd.DataFrame(data, index = ['Londres','Madrid','Barcelona','Sevilla','Cádiz','Lima']) #Creating a lambda function to pass the degrees Celsius to Kelvin

to_kelvin = lambda x: (x + 273,15) #apply the Lambda to the [Kelvin] column with the apply() method

df = df['Kelvin'].apply(to_kelvin) #In the column 'Kelvin' the Lambda has been applied, the 273.15 applied by Lambda has been added to x (in this case 22 from London) London (295, 15)

Madrid (309, 15)

Barcelona (293, 15)

Seville (299, 15)

Cadiz (303, 15)

Lima (311, 15) Name: Kelvin, dtype: object

Output :

London (295, 15)

Madrid (309, 15)

Barcelona (293, 15)

Seville (299, 15)

Cadiz (303, 15)

Lima (311, 15)

Photo by Vlad Hilitanu on Unsplash

Lambda in lists with the filter() method

The filter() function is able to return a new collection with the filtered elements that meet a condition.

We can check, for example, what the even numbers are in a given list. To do this we will pass a list to a Lambda in the following way:

#I have a list with many numbers

check = [38,24,99,42,2,3,11,23,53,21,3,53,77,12,34,92,122,1008,26] #I create a variable and apply filter() and lambda

filt = filter(lambda x: x % 2 == 0, check) #I create a variable to convert the result of 'filt' into a list

pairs = list(filt) #Finally I get the list with the results that have returned True when passing the filter print(pairs)

Output :

[38, 24, 42, 2, 12, 34, 92, 122, 1008, 26]