Lösung: der .str-accessor kann nur mit zeichenfolgenwerten verwendet werden


Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:

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

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, ein Muster in einer Zeichenfolgenspalte eines Pandas-DataFrames zu ersetzen, die Spalte, mit der Sie arbeiten, jedoch eigentlich keine Zeichenfolge ist.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Pandas-DataFrame:

 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

Nehmen wir nun an, wir versuchen, jede Dezimalstelle in der Spalte „Punkte“ durch ein Leerzeichen zu ersetzen:

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

Wir erhalten eine Fehlermeldung, da die Spalte „Punkte“ keine Zeichenfolgenspalte ist.

So beheben Sie den Fehler

Der einfachste Weg, diesen Fehler zu umgehen, besteht darin, die Funktion .astype(str) zu verwenden, bevor versucht wird, Werte in der Spalte „Punkte“ zu ersetzen:

 #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

Beachten Sie, dass jede Dezimalstelle in der Spalte „Punkte“ ersetzt wurde und wir keine Fehlermeldungen erhalten, da wir die Funktion .astype(str) verwendet haben, bevor wir versucht haben, die Werte in der Spalte „Punkte“ zu ersetzen.

Hinweis : Die vollständige Dokumentation für die Funktion replace() finden Sie hier .

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden

Einen Kommentar hinzufügen

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