pandas: Convert Strings to Numbers#
Package Import#
import pandas as pd
import numpy as np
Dataset Import#
The dataset used in this notebook is from Kaggle - Pokemon.
data = pd.read_csv('data/Pokemon.csv')
data
Convert strings to numbers#
df = pd.DataFrame({'col1': ['1.1', '2.2', '3.3'], 'col2': ['4.4', '5.5', '6.6'], 'col3': ['7.7', '8.8', '-']})
df, df.dtypes
df.astype()
can convert multiple columns at once. Use errors='ignore'
to skip conversion errors.
df.astype({'col1': 'float', 'col2': 'float'}, errors='raise').dtypes
df.astype({'col1': 'float', 'col2': 'float', 'col3': 'float'}, errors='ignore').dtypes
A better way to convert strings to numbers is to use pd.to_numeric()
with errors='coerce'
to convert invalid parsing to NaN.
pd.to_numeric(df.col3, errors='coerce')
pd.to_numeric(df.col3, errors='coerce').fillna(0)
df = df.apply(pd.to_numeric, errors='coerce').fillna(0)
df, df.dtypes