How to Convert a String Column to Float in Pandas

Spread the love

Problem –

You have a numeric column in pandas which is represented as a string and you want to convert it into a float type.

Solution –

There are several method for converting a string column to float in pandas, let’s look at them one by one.

Method 1 – astype() –

Let’s read a dataset to illustrate it.

import pandas as pd
url = "https://raw.githubusercontent.com/bprasad26/lwd/master/data/QueenCity.csv"
df = pd.read_csv(url)
df.head()

Let’s also look at the data types of the columns.

df.dtypes

Although the Expenditure column contains numeric values but due to addition of dollar ($) signs and commas, it is represented as string (object) in pandas. This is a common problems which people face. Let’s try to convert this to a float type.

First thing we have to do is remove those dollar signs and commas.

# replace dollar sign and commas
df['Expenditure'] = df['Expenditure'].str.replace('$', '').str.replace(',', '')

Here, we are doing method chaining to replace dollar signs and commas in one go.

Now, to convert this string column to float we can use the astype method in pandas.

df['Expenditure'] = df['Expenditure'].astype(float)
df.dtypes

Related Post –

1 . Pandas – astype() – Change column data type in pandas

Method 2 – to_numeric() –

Another method for converting a string column to float is using to_numeric()

df['Expenditure'] = pd.to_numeric(df['Expenditure'], errors='coerce')

error=’coerce’ convert any invalid values into NaN ( Not a number ).

df.dtypes

Leave a Reply