Como corrigir: só é possível usar o acessador .str com valores de string
Um erro que você pode encontrar ao usar Python é:
AttributeError : Can only use .str accessor with string values!
Este erro normalmente ocorre quando você tenta substituir um padrão em uma coluna de string de um DataFrame do pandas, mas a coluna com a qual você está trabalhando não é na verdade uma string.
O exemplo a seguir mostra como corrigir 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 ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
' points ': [6.5, 7.8, 8.0, 9.0, 7.5, 3.4, 6.6, 6.8],
' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})
#view DataFrame
df
team points assists rebounds
0 A 6.5 5 11
1 A 7.8 7 8
2 A 8.0 7 10
3 A 9.0 9 6
4 B 7.5 12 6
5 B 3.4 9 5
6 B 6.6 9 9
7 B 6.8 4 12
Agora suponha que tentamos substituir cada casa decimal na coluna “pontos” por um espaço:
#attempt to replace decimal in "points" column with a blank
df[' points '] = df[' points ']. str . replace (' . ', '')
AttributeError : Can only use .str accessor with string values!
Estamos recebendo um erro porque a coluna “pontos” não é uma coluna de string.
Como corrigir o erro
A maneira mais fácil de contornar esse erro é usar a função .astype(str) antes de tentar substituir valores na coluna “pontos”:
#replace decimal in "points" column with a blank
df[' points '] = df[' points ']. astype (str). str . replace (' . ', '')
#view updated DataFrame
df
team points assists rebounds
0 A 65 5 11
1 A 78 7 8
2 A 80 7 10
3 A 90 9 6
4 B 75 12 6
5 B 34 9 5
6 B 66 9 9
7 B 68 4 12
Observe que todas as casas decimais da coluna “pontos” foram substituídas e não estamos recebendo nenhum erro, pois utilizamos a função .astype(str) antes de tentar substituir os valores da coluna “pontos”.
Nota : Você pode encontrar a documentação completa para a função replace() aqui .
Recursos adicionais
Os tutoriais a seguir explicam como corrigir outros erros comuns em Python:
Como corrigir KeyError em Pandas
Como corrigir: ValueError: não é possível converter float NaN em int
Como corrigir: ValueError: os operandos não puderam ser transmitidos com formas