๐Ÿ€Zerve chosen as NCAA's Agentic Data Platform for 2026 Hackathonยท๐ŸงฎMeet the Zerve Team at Data Decoded Londonยท๐Ÿ“ˆWe're hiring โ€” awesome new roles just gone live!
Back
Pandas

ValueError: could not convert string to float - How to Fix it

Answer

This error occurs when pandas or numpy tries to convert a column to numeric but encounters text values it can't parse. Fix it by cleaning the column first โ€” remove non-numeric characters, handle empty strings, or use pd.to_numeric() with errors='coerce' to convert problem values to NaN.

Why This Happens

Your data contains values that look numeric but aren't. Common culprits: currency symbols ($100), commas in numbers (1,000), percentage signs (50%), empty strings, whitespace, or actual text mixed in (N/A, missing). When you try to cast the column to float or pass it to a model, Python fails because it can't interpret these as numbers.

Solution

The rule: always inspect your column with df['col'].unique() before converting, then clean or coerce.

import pandas as pd

df = pd.DataFrame({'price': ['100', '$200', '300', 'N/A', '1,500']})

# โŒ Problematic: direct conversion fails
df['price'] = df['price'].astype(float)
# ValueError: could not convert string to float: '$200'

# โœ… Fixed: use to_numeric with coerce, then handle NaNs
df['price'] = pd.to_numeric(df['price'].replace('[\$,]', '', regex=True), errors='coerce')

Better Workflow

Zerve displays dataframe outputs inline after each cell, making it easy to spot dirty values before they break downstream code. You can inspect, clean, and verify in sequence without losing track of state.

Better workflow

Related Topics

Decision-grade data work

Explore, analyze and deploy your first project in minutes