Ein Fehler, auf den Sie bei der Verwendung von Python stoßen können, 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 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

#Dataframe erstellen
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]})

#Dataframe anzeigen
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:

# Versuch, die Dezimalstelle in der Spalte "Punkte" durch ein Leerzeichen zu ersetzen
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 Sie versuchen, Werte in der Spalte „Punkte“ zu ersetzen:

#Ersetze die Dezimalstelle in der Spalte "Punkte" durch ein Leerzeichen
df['points'] = df['points'].astype(str).str.replace('.', '')

#aktualisierten DataFrame anzeigen
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 keinen Fehler erhalten, da wir die Funktion .astype(str) verwendet haben, bevor wir versucht haben, Werte in der Spalte „Punkte“ zu ersetzen.

Hinweis : Die vollständige Dokumentation zur 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
Behebung: ValueError: Float NaN kann nicht in Integer konvertiert werden
Behebung: ValueError: Operanden konnten nicht zusammen mit Shapes übertragen werden

Statistik: Der Weg zur Datenanalyse

* Amazon Affiliate Link


Das könnte Sie auch interessieren: