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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *