Jak naprawić: można używać akcesora .str tylko z wartościami łańcuchowymi
Błąd, który możesz napotkać podczas korzystania z Pythona, to:
AttributeError : Can only use .str accessor with string values!
Ten błąd zwykle występuje, gdy próbujesz zamienić wzorzec w kolumnie ciągu w ramce DataFrame pandy, ale kolumna, z którą pracujesz, w rzeczywistości nie jest ciągiem.
Poniższy przykład pokazuje, jak w praktyce skorygować ten błąd.
Jak odtworzyć błąd
Załóżmy, że mamy następującą ramkę DataFrame pand:
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
Załóżmy teraz, że próbujemy zastąpić każde miejsce po przecinku w kolumnie „punkty” spacją:
#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!
Otrzymujemy błąd, ponieważ kolumna „punkty” nie jest kolumną typu string.
Jak naprawić błąd
Najprostszym sposobem obejścia tego błędu jest użycie funkcji .astype(str) przed próbą zamiany wartości w kolumnie „punkty”:
#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
Należy pamiętać, że każde miejsce dziesiętne w kolumnie „punkty” zostało zastąpione i nie otrzymujemy żadnych błędów, ponieważ przed próbą zastąpienia wartości w kolumnie „punkty” użyliśmy funkcji .astype(str) .
Uwaga : Pełną dokumentację funkcji zamiany() znajdziesz tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak naprawić inne typowe błędy w Pythonie:
Jak naprawić błąd KeyError w Pandach
Jak naprawić: ValueError: Nie można przekonwertować float NaN na int
Jak naprawić: Błąd wartości: Nie można rozgłaszać argumentów z kształtami