Do you want to convert float to integer using Pandas? In this Python tutorial, I will explain how to use Pandas to convert float to int in Python using different methods with some illustrative examples.
To convert float to int in Pandas in Python, utilize df.astype() for straightforward truncation, round() combined with astype() for rounding values, df.apply() with a custom function for greater control, numpy.floor() or numpy.ceil() for floor or ceiling operations, and df.to_numeric() for handling strings or mixed data types before conversion.
Pandas to convert float to int in Python
There are five different methods in Pandas to convert float to int in Python:
- Using df.astype()
- Using round() with astype()
- Using df.apply()
- Using numpy.floor() or numpy.ceil()
- Using df.to_numeric()
Let’s see them one by one using some demonstrative examples:
1. Convert float to int Pandas using df.astype() function
Using the df.astype() function in Pandas to convert float to int in Python, directly changes the data type of a column to the integer, truncating all decimal parts.
Here is an example:
import pandas as pd
df = pd.DataFrame({'JFK Airport': [200.7, 195.5], 'LAX Airport': [180.2, 175.8]})
print("Before Converting:\n", df)
df = df.astype(int)
print("DataFrame after using df.astype():\n", df)
Output:
Before Converting:
JFK Airport LAX Airport
0 200.7 180.2
1 195.5 175.8
DataFrame after using df.astype():
JFK Airport LAX Airport
0 200 180
1 195 175
Below is a screenshot displaying the output following the implementation of the code in the Pycharm editor.
2. Pandas convert float to int using round() with astype() function
First, this method rounds the floating-point numbers to the nearest integer using Python’s round() function, then converts them to integers using astype(int). It’s useful when we want to round off values rather than simply truncating them.
Here is an example using the round() function with the astype() function in Python to convert float to int in Python:
import pandas as pd
df = pd.DataFrame({'Seattle': [3.76, 4.18], 'Miami': [5.34, 6.12]})
print("Before Converting:\n", df)
df = df.round().astype(int)
print("\nDataFrame using round() with astype():\n", df)
Output:
Before Converting:
Seattle Miami
0 3.76 5.34
1 4.18 6.12
DataFrame using round() with astype():
Seattle Miami
0 4 5
1 4 6
A screenshot is mentioned below, after implementing the code in the Pycharm editor.
3. Pandas float to int using df.apply() function
This approach involves applying a custom function to each element of the DataFrame in Python. It allows for complex operations or conditions before converting floats to integers using the df.apply() function.
This is the code for Pandas to convert float to int in Python using df.apply() function:
import pandas as pd
def convert_to_int(x):
return int(round(x))
df = pd.DataFrame({'California': [45.5, 48.3], 'Alaska': [20.1, 22.6]})
print("Before Converting:\n", df)
df['California'] = df['California'].apply(convert_to_int)
print("\nDataFrame using df.apply():\n", df)
Output:
Before Converting:
California Alaska
0 45.5 20.1
1 48.3 22.6
DataFrame using df.apply():
California Alaska
0 46 20.1
1 48 22.6
After executing the code in Pycharm, one can see the output in the below screenshot.
4. float to int Pandas using np.floor() or np.ceil() function
These np.floor() or np.ceil() functions are used for the floor (rounding down) or ceiling (rounding up) operations before converting the values to integers in Python.
Here is the code, in Pandas to convert float to int in Python using np.floor() or np.ceil():
import pandas as pd
import numpy as np
df = pd.DataFrame({'Software Engineer': [105.7, 108.3], 'Teacher': [50.2, 51.5]})
print("Before Converting:\n", df)
df['floor_income'] = np.floor(df['Software Engineer']).astype(int)
df['ceil_income'] = np.ceil(df['Teacher']).astype(int)
print("\nDataFrame using numpy.floor() or numpy.ceil():\n", df)
Output:
Before Converting:
Software Engineer Teacher
0 105.7 50.2
1 108.3 51.5
DataFrame using numpy.floor() or numpy.ceil():
Software Engineer Teacher floor_income ceil_income
0 105.7 50.2 105 51
1 108.3 51.5 108 52
After implementing the code in the Pycharm editor, the screenshot is mentioned below.
5. Pandas change float to int using df.to_numeric() function
The df.to_numeric() method is ideal for converting strings or mixed-type columns to a numeric type before casting them into integers in Python.
Here is the code in Pandas to convert float to int in Python using the df.to_numeric() function:
import pandas as pd
df = pd.DataFrame({'Northeast': ['25.5', '27.1'], 'Southwest': ['18.2', '19.4']})
print("Before Converting:\n", df)
df = df.apply(pd.to_numeric).astype(int)
print("\nDataFrame using df.to_numeric():\n", df)
Output:
Before Converting:
Northeast Southwest
0 25.5 18.2
1 27.1 19.4
DataFrame using df.to_numeric():
Northeast Southwest
0 25 18
1 27 19
Below is a screenshot showcasing the output, captured after the code was executed in the Pycharm editor.
Conclusion
Here, I have explained five methods that can be used in Pandas to convert float to int in Python, showcasing the versatility and flexibility of the library. These methods include df.astype(), round() with astype(), df.apply(), numpy.floor() or numpy.ceil(), and df.to_numeric().
Each serves a unique purpose, ensuring we have the right tool for various data transformation scenarios.
You may also like to read:
- Print First 10 Rows from a Pandas DataFrame in Python
- Filter DataFrame in Python Pandas
- Pandas count rows with condition in Python
- How to Convert Int to Datetime in Python Pandas DataFrame
I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.