Como corrigir no pandas: não é possível converter string em float
Um erro comum que você pode encontrar ao usar pandas é:
ValueError : could not convert string to float: '$400.42'
Este erro normalmente ocorre quando você tenta converter uma string em float no pandas, quando a string contém um ou mais dos seguintes itens:
- Os espaços
- Vírgulas
- Caracteres especiais
Quando isso acontece, você deve primeiro remover esses caracteres da string antes de convertê-la em float.
O exemplo a seguir mostra como resolver esse erro na prática.
Como reproduzir o erro
Suponha que temos o seguinte DataFrame do pandas:
import pandas as pd #createDataFrame df = pd. DataFrame ({' store ': ['A', 'B', 'C', 'D'], ' revenue ': ['$400.42', '$100.18', '$243.75', '$194.22']}) #view DataFrame print (df) store revenue 0 A $400.42 1 B $100.18 2 C $243.75 3D $194.22 #view data type of each column print ( df.dtypes ) store object revenue object dtype:object
Agora suponha que estamos tentando converter a coluna de receita de uma string para um float:
#attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)
ValueError : could not convert string to float: '$400.42'
Estamos recebendo um erro porque a coluna de renda contém um cifrão nas strings.
Como corrigir o erro
A maneira de resolver esse erro é usar a função replace() para substituir os cifrões na coluna de receita por nada antes de realizar a conversão:
#convert revenue column to float
df[' revenue '] = df[' revenue ']. apply ( lambda x: float(x. split ()[ 0 ]. replace (' $ ', '')))
#view updated DataFrame
print (df)
store revenue
0 to 400.42
1 B 100.18
2 C 243.75
3 D 194.22
#view data type of each column
print ( df.dtypes )
store object
income float64
dtype:object
Observe que podemos converter a coluna de receita de uma string para flutuante e não estamos recebendo nenhum erro, pois removemos os cifrões antes de fazer a conversão.
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir em Python: o objeto ‘numpy.ndarray’ não pode ser chamado
Como corrigir: TypeError: o objeto ‘numpy.float64’ não pode ser chamado
Como corrigir: erro de tipo: objeto de string ou bytes esperado