Multiply Columns by a Scalar in Pandas

We use Pandas for many dataframe operations, from populating data to cleaning the said data. The Pandas dataframe offers methods for data and mathematical operations using Python.

Different mathematical operations might seem less intuitive to carry out, but with Python, they are a lot easier than you think. One such operation is multiplying Pandas columns by scalar values.

This article will show five ways to multiply columns by a scalar in Pandas within different complexities.

Use In-Place Assignment to Multiply Columns by a Scalar in Pandas

Before we go into how to approach multiplying columns by scalar values in pandas using in-place assignment, let’s showcase what we intend to achieve.

We have a dataframe with seven columns.

Now, we want to multiply a column (one) by a scalar value (5).

So, how do we achieve that? The first approach is using in-place assignment, an operation where we, in addition, to assigning a value, operate on the value.

Using in-place assignment, we overwrite the value of the first operand variable with the result of the operation performed on the value of the operand. Visually, x *= 3 is equivalent to x = x * 3 where the value held by the variable x is multiplied by 3 and then assigned to the same variable x.

To illustrate this, we can create a Pandas dataframe of 6 rows and 7 columns populated with ones which assigned column names and perform the in-place assignment on the one column.

import pandas as pd
import numpy as np

df = pd.DataFrame(np.ones((6,7)),columns=['one','two','three', 'four','five','six', 'seven'])

print(df)

Output:

one  two  three  four  five  six  seven
0  1.0  1.0    1.0   1.0   1.0  1.0    1.0
1  1.0  1.0    1.0   1.0   1.0  1.0    1.0
2  1.0  1.0    1.0   1.0   1.0  1.0    1.0
3  1.0  1.0    1.0   1.0   1.0  1.0    1.0
4  1.0  1.0    1.0   1.0   1.0  1.0    1.0
5  1.0  1.0    1.0   1.0   1.0  1.0    1.0

To use in-place assignment, we have to select the Pandas column we want to multiply by the scalar value using either the dot notation or the bracket notation. Using the bracket notation, we select the one column.

df['one'] *= 5

print(df)

Output:

one  two  three  four  five  six  seven
0  5.0  1.0    1.0   1.0   1.0  1.0    1.0
1  5.0  1.0    1.0   1.0   1.0  1.0    1.0
2  5.0  1.0    1.0   1.0   1.0  1.0    1.0
3  5.0  1.0    1.0   1.0   1.0  1.0    1.0
4  5.0  1.0    1.0   1.0   1.0  1.0    1.0
5  5.0  1.0    1.0   1.0   1.0  1.0    1.0

As you can see, the one column has been multiplied by the scalar value (5).

Use the multiply Function to Multiply Columns by a Scalar in Pandas

Rather than use the multiplication operator in an in-place assignment approach, you can use the multiply method provided by Pandas. We apply the method in the column we want and pass the scalar value as the argument for the multiply method.

To showcase the multiply method, we will multiply the column two by the scalar value of 7 (accessing the column two using the dot notation).

df.two = df.two.multiply(7)
print(df)

Output:

one  two  three  four  five  six  seven
0  5.0  7.0    1.0   1.0   1.0  1.0    1.0
1  5.0  7.0    1.0   1.0   1.0  1.0    1.0
2  5.0  7.0    1.0   1.0   1.0  1.0    1.0
3  5.0  7.0    1.0   1.0   1.0  1.0    1.0
4  5.0  7.0    1.0   1.0   1.0  1.0    1.0
5  5.0  7.0    1.0   1.0   1.0  1.0    1.0

Use the apply Function to Multiply Columns by a Scalar in Pandas

Similar to how we used the multiply method, we can use the apply method - a higher-order function - to multiply columns by a scalar in Pandas. The apply method takes a lambda function that will carry out an action on the cell elements of the column it’s applied on.

So, we can specify a multiplication action on the cell element using the lambda function.

To illustrate how this works, we will multiply the three column (from the dataframe used in earlier sections) by 9 using the apply method.

df['three'] = df['three'].apply(lambda x: x*9)
print(df)

Output:

one  two  three  four  five  six  seven
0  5.0  7.0    9.0   1.0   1.0  1.0    1.0
1  5.0  7.0    9.0   1.0   1.0  1.0    1.0
2  5.0  7.0    9.0   1.0   1.0  1.0    1.0
3  5.0  7.0    9.0   1.0   1.0  1.0    1.0
4  5.0  7.0    9.0   1.0   1.0  1.0    1.0
5  5.0  7.0    9.0   1.0   1.0  1.0    1.0

You can see that all the cells in the three column have been multiplied by 9 based on the lambda function. This approach can seem stressful, but it can be more functional when the value we want to multiply the column may vary based on the cell.

Use the loc Operator to Multiply Columns by a Scalar in Pandas

Also, we can use the loc operator to multiply the column by a scalar in Pandas. With the loc operator, we can index a portion of a dataframe.

We can index based on rows and columns. For us, we need to index based on the column we need.

The typical syntax for the loc operator is given below.

DataFrame.loc[rows, columns]

However, for us to access only the column, we can use the syntax below.

DataFrame.loc[:, columns]

The : indicates that it wants all the rows. Together, the syntax above means to access all the rows in the specified column.

Now, we will use the above syntax to get the column four and use the in-place assignment to multiply the values by 11.

df.loc[:, 'four'] *= 11
print(df)

Output:

one  two  three   four  five  six  seven
0  5.0  7.0    9.0  11.0   1.0  1.0   1.0
1  5.0  7.0    9.0  11.0   1.0  1.0   1.0
2  5.0  7.0    9.0  11.0   1.0  1.0   1.0
3  5.0  7.0    9.0  11.0   1.0  1.0   1.0
4  5.0  7.0    9.0  11.0   1.0  1.0   1.0
5  5.0  7.0    9.0  11.0   1.0  1.0   1.0

This seems unnecessarily long, but this approach is functional if we want to multiply multiple columns. For example, if we want to multiply columns five and six by 13, we will pass a list containing the names of the column as the second argument to the loc operator.

df.loc[:, ['five', 'six']] *=13
print(df)

Output:

one  two  three  four  five   six  seven
0  5.0  7.0    9.0  11.0  13.0  13.0    1.0
1  5.0  7.0    9.0  11.0  13.0  13.0    1.0
2  5.0  7.0    9.0  11.0  13.0  13.0    1.0
3  5.0  7.0    9.0  11.0  13.0  13.0    1.0
4  5.0  7.0    9.0  11.0  13.0  13.0    1.0
5  5.0  7.0    9.0  11.0  13.0  13.0    1.0

Use the iloc Operator to Multiply Columns by a Scalar in Pandas

Similar to the loc operator, it accepts only integer values as the index for the values we intend to access. Unlike loc, where we can use the column’s name, we use the column’s index value.

Also, remember that the index starts at 0 and not 1. Therefore, if we want to access column seven and multiply by 15, we will use the index value 6.

df.iloc[:, 6] = df.iloc[:, 6]*15
print(df)

Output:

one  two  three  four  five   six  seven
0  5.0  7.0    9.0  11.0  13.0  13.0   15.0
1  5.0  7.0    9.0  11.0  13.0  13.0   15.0
2  5.0  7.0    9.0  11.0  13.0  13.0   15.0
3  5.0  7.0    9.0  11.0  13.0  13.0   15.0
4  5.0  7.0    9.0  11.0  13.0  13.0   15.0
5  5.0  7.0    9.0  11.0  13.0  13.0   15.0

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.