# How to Apply a Function to Series Elements

## Problem Formulation and Solution Overview

As a Python Coder, situations arise where you will need to apply a function against elements of a Series.

To make it more fun, we have the following running scenario:

Rivers Clothing does business with six (6) different countries. The Tax Rates for the associated countries have increased by 2%.

💬 Question: How would we update the Series entries to increase the elements accordingly?

We can accomplish this task by one of the following options:

## Preparation

Before any data manipulation can occur, one (1) new library will require installation.

To install this library, navigate to an IDE terminal. At the command prompt (`\$`), execute the code below. For the terminal used in this example, the command prompt is a dollar sign (`\$`). Your terminal prompt may be different.

`\$ pip install pandas`

Hit the `<Enter>` key on the keyboard to start the installation process.

If the installation was successful, a message displays in the terminal indicating the same.

Feel free to view the PyCharm installation guide for the required library.

Add the following code to the top of each code snippet. This snippet will allow the code in this article to run error-free.

`import pandas as pd `

## Method 1: Use Apply and a Lambda

You can apply a function to each element of an array by using `apply()` where you pass an anonymous `lambda` function. This function executes on each array element.

Here’s an example:

```t_rates  = [15, 17, 18, 19, 20, 21]
t_series = pd.Series(t_rates, index=['CA', 'US', 'UK', 'AU', 'DK', 'DE'])
t_series = t_series.apply(lambda x: x*.02+x)
print(t_series)```

Above is a list of current Tax Rates (`t_rates`) for the six (6) countries. To update the Tax Rate, we create a Series (`t_series`) from the above list by calling the `pd.Series()` function and passing it two (2) parameters:

Using `apply()` and a `lambda` we increase each Tax Rate by 2% in a single one-liner statement.

The results save back to` t_series`. As simple as that!

Output

💡 Note: Initially, all Tax Rates were integers. However, once the increase is applied, they automatically convert to `float64`.

## Method 2: Use List Comprehension

List Comprehension uses a single expression to iterate through all list elements. You can apply a particular function to each array element in the expression.

For example, you can use list comprehension to make the appropriate Tax Rate adjustments.

```t_rates  = [15, 17, 18, 19, 20, 21]
t_series = pd.Series(t_rates, index=['CA', 'US', 'UK', 'AU', 'DK', 'DE'])
t_series = [x*.02+x for(x) in t_series]
print(t_series)```

Above is a list of current Tax Rates (`t_rates`) for the six (6) countries. To update the Tax Rate, we create a Series (`t_series`) from the above list by calling the `pd.Series()` function and passing it two (2) parameters:

Using List Comprehension and a `for` loop, we increase each Tax Rate by 2% in a single statement. The results save back to` t_series`.

Output

Unlike Method 1, the output displays on one line.

## Method 3: Use a for loop and iat

Another way to handle the Tax Rate change is to use a `for` loop and reference the elements using `iat[]`.

The code below accesses each element via the position and updates the Tax Rate by 2% accordingly. The results save back to` t_series`.

```t_rates  = [15, 17, 18, 19, 20, 21]
t_series = pd.Series(t_rates, index=['CA', 'US', 'UK', 'AU', 'DK', 'DE'])
icount = 0
for i in t_series:
t_series.iat[icount] += t_series.iat[icount]*.02
icount += 1```

This code is not as efficient as other methods, but the output remains the same.

Output

💡 Note: `iat[]` is similar to `iloc[]`. However, `iat[]` returns a single value and therefore executes faster.

## Method 4: Use update

The Series `update()` method modifies the Series data in place. We recommend using this method when only a few elements require adjustments. However, the entire Series could be changed using this method.

Let’s assume two (2) countries decide to increase their Tax Rate by 2%, and the remaining Countries ignore any Tax Rate change.

```t_rates  = [15, 17, 18, 19, 20, 21]
t_series = pd.Series(t_rates, index=['CA', 'US', 'UK', 'AU', 'DK', 'DE'])
t_series.update(pd.Series([18.36, 19.38], index=['UK', 'AU']))
print(t_series)```

In this code, we pass` t_series.update()` the `pd.Series()` a function containing two (2) parameters:

• A list of modified Tax Rates (calculated manually).
• An `index` containing a list of 2-character Country Codes. This list indicates which Country will have the new Tax Rate applied.

After running this code, the two (2) countries with the 2% tax increase applied (UK & AU) are updated. The results save back to` t_series`.

Output

💡 Note: Initially, all Tax Rates were integers. However, once the increase is applied, they automatically convert to float64.

## Summary

As you can see, there are a few ways to accomplish the same task. It is up to you to decide which method best meets your coding requirements.

Good Luck & Happy Coding!