In today’s tutorial we’ll learn how to round values in Pandas DataFrame columns. We’ll look into several cases:
- Round float values to the nearest 2 decimals
- Round float values to nearest 10 / 100
- Rounding a Series
- Persisting changes after rounding up
Example DataFrame
Let’s get starting by creating a sample DataFrame that you can use to follow along:
import pandas as pd
month = ['January', 'September', 'May', 'December']
language = ['Kotlin', 'VisualBasic', 'Java', 'C']
salary = [85.504, 84.22, 86.22, 86.55]
hr = dict(month=month, language=language, salary=salary)
df = pd.DataFrame(data=hr)
Let’s look into the DataFrame values:
month | language | salary | |
---|---|---|---|
0 | January | Kotlin | 85.504 |
1 | September | VisualBasic | 84.220 |
2 | May | Java | 86.220 |
3 | December | C | 86.550 |
Rounding specific columns to nearest two decimals
In our case we would like to take care of the salary column. We’ll use the round DataFrame method and pass a dictionary containing the column name and the number of decimal places to round to.
df.round(decimals = {'salary': 2})
Here is the result:
month | language | salary | |
---|---|---|---|
0 | January | Kotlin | 85.50 |
1 | September | VisualBasic | 84.22 |
2 | May | Java | 86.22 |
3 | December | C | 86.55 |
Note that if you have multiple columns to be rounded you should pass them to the dictionary accordingly.
#pseudo code
df.round(decimals = {'col1': <decimals_col1, 'coln': <decimals_coln> })
Rounding up column values to nearest 10 / 100
In the same fashion we can use a negative number in the decimals parameter to round up/down to nearest 1000 /100 /10 etc’:
# nearest 10
df.round(decimals = {'salary': -1})
#nearest 100
df.round(decimals = {'salary': -2})
Rounding a single column (Series)
df['salary'].round(decimals=0)
Persisting changes in your DataFrame
The round method doesn’t have an inplace parameter; therefore if you would like to save your rounded values, you need to assign them into a new DataFrame:
df_rounded = df.round(decimals = {'salary': 2})
Suggested Learning
How to convert Pandas columns to integers and handle NAN values?