Oplossing: kan alleen de .str-accessor gebruiken met tekenreekswaarden


Een fout die u kunt tegenkomen bij het gebruik van Python is:

 AttributeError : Can only use .str accessor with string values!

Deze fout treedt meestal op wanneer u probeert een patroon in een tekenreekskolom van een Panda DataFrame te vervangen, maar de kolom waarmee u werkt niet daadwerkelijk een tekenreeks is.

Het volgende voorbeeld laat zien hoe u deze fout in de praktijk kunt corrigeren.

Hoe de fout te reproduceren

Stel dat we de volgende panda’s DataFrame hebben:

 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

Stel nu dat we proberen elke decimaal in de kolom “punten” te vervangen door een spatie:

 #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! 

We ontvangen een foutmelding omdat de kolom ‚punten‘ geen tekenreekskolom is.

Hoe u de fout kunt oplossen

De eenvoudigste manier om deze fout te omzeilen is door de functie .astype(str) te gebruiken voordat u probeert de waarden in de kolom „punten“ te vervangen:

 #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

Merk op dat elke decimaal in de kolom „punten“ is vervangen en dat we geen fouten ontvangen omdat we de functie .astype(str) hebben gebruikt voordat we probeerden de waarden in de kolom „punten“ te vervangen.

Opmerking : u kunt de volledige documentatie voor de functie Replace() hier vinden.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende fouten in Python kunt oplossen:

Hoe KeyError in Panda’s te repareren
Oplossing: ValueError: Kan float NaN niet naar int converteren
Oplossing: ValueError: Operanden konden niet worden uitgezonden met vormen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert