Come risolvere il problema: è possibile utilizzare solo la funzione di accesso .str con valori stringa


Un errore che potresti riscontrare quando usi Python è:

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

Questo errore si verifica in genere quando si tenta di sostituire un modello in una colonna di stringa di un DataFrame panda, ma la colonna con cui stai lavorando non è effettivamente una stringa.

L’esempio seguente mostra come correggere questo errore nella pratica.

Come riprodurre l’errore

Supponiamo di avere i seguenti panda 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

Supponiamo ora di provare a sostituire ogni cifra decimale nella colonna “punti” con uno spazio:

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

Riceviamo un errore perché la colonna “punti” non è una colonna stringa.

Come correggere l’errore

Il modo più semplice per aggirare questo errore è utilizzare la funzione .astype(str) prima di tentare di sostituire i valori nella colonna “punti”:

 #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

Tieni presente che ogni cifra decimale nella colonna “punti” è stata sostituita e non riceviamo alcun errore poiché abbiamo utilizzato la funzione .astype(str) prima di provare a sostituire i valori nella colonna “punti”.

Nota : puoi trovare la documentazione completa per la funzione replace() qui .

Risorse addizionali

I seguenti tutorial spiegano come correggere altri errori comuni in Python:

Come correggere l’errore chiave nei Panda
Come risolvere il problema: ValueError: impossibile convertire float NaN in int
Come risolvere il problema: ValueError: non è stato possibile trasmettere gli operandi con le forme

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *