Pandas Apply

One alternative to using a loop to iterate over a DataFrame is to use the pandas .apply()
method. This function acts as a map()
function in Python. It takes a function as an input and applies this function to an entire DataFrame.
If you are working with tabular data, you must specify an axis you want your function to act on (0
for columns; and 1
for rows).
Much like the map()
function, the apply()
method can also be used with anonymous functions or lambda functions. Let's look at some apply()
examples using baseball data.
Much like the map()
function, the apply()
method can also be used with anonymous functions or lambda functions. Let's look at some apply()
examples using baseball data.
Calculating Run Differentials With .apply()
First, you will call the .apply()
method on the basebal_df
dataframe. Then use the lambda
function to iterate over the rows of the dataframe. For every row, we grab the RS
and RA
columns and pass them to the calc_run_diff
function. Finally, you will specify the axis=1
to tell the .apply()
method that we want to apply it on the rows instead of columns.

You’ll notice that we don’t need to use a for
loop. You can collect the run differentials directly into an object called run_diffs_apply
. After creating a new column and printing the dataframe you will notice that the results are similar to what you will get with the .iterrows()
method.


Example Using .apply()
The Tampa Bay Rays want you to analyze their data.
They’d like the following metrics:
- The sum of each column in the data
- The total amount of runs scored in a year (
'RS'
+'RA'
for each year) - The
'Playoffs'
column in text format rather than using1's
and0's
The below function can be used to convert the 'Playoffs'
column to text:

Use .apply()
to get these metrics. A DataFrame (rays_df
) has been printed below. This DataFrame is indexed on the 'Year'
column.

- Apply
sum()
to each column of therays_df
to collect the sum of each column. Be sure to specify the correctaxis
.

When we run the above code, it produces the following result:

RELATED LINKS