Converting string columns in Pandas dataframe to Float in Pandas dataframe

Python Pandas @ Freshers.in

While working with data in Pandas, it’s common to encounter columns formatted as strings when they should be numerical. This often happens due to data inconsistencies or when importing data from heterogeneous sources. Converting these string columns to a numerical type, like float, can be crucial for performing arithmetic operations or visualizations. This article will guide you through the process of converting string columns to float type in Pandas with hands-on examples.

Sample dataframe with string-type columns

import pandas as pd
# Sample data with salaries as string type
df = pd.DataFrame({
    'Name': ['Sachin', 'Ram', 'Abhilash', 'Mike', 'Elaine'],
    'Salary': ['1000.50', '1500.35', '1200.75', '1100.90', '1450.60']
})
print(df.dtypes)
print(df)

Converting String Column to Float Type:

Using astype() Method:

The most straightforward way to convert a column to a float type is using the astype() method.

df['Salary'] = df['Salary'].astype(float)
print(df.dtypes)
print(df)

After running the above code, the ‘Salary’ column is now of type float.

Using pd.to_numeric() Function:

Another approach is to use the pd.to_numeric() function, which provides more flexibility and can handle errors

# Resetting our DataFrame to string type for demonstration
df['Salary'] = ['1000.50', '1500.35', '1200.75', '1100.90', '1450.60']
df['Salary'] = pd.to_numeric(df['Salary'], errors='coerce')
print(df.dtypes)
print(df)

The errors=’coerce’ argument will replace any invalid parsing with NaN, ensuring that the conversion doesn’t fail due to a few problematic entries.

Handling Common Pitfalls: While converting strings to floats, you might encounter a few challenges:

Commas as Thousands Separators: If your data uses commas, remove them before conversion.

df['Salary'] = df['Salary'].str.replace(',', '').astype(float)
Non-Numeric Strings:
As mentioned earlier, using pd.to_numeric() with errors='coerce' will replace problematic entries with NaN.
Author: user