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

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *