Nasıl düzeltilir: .str erişimcisi yalnızca dize değerleriyle kullanılabilir
Python kullanırken karşılaşabileceğiniz bir hata:
AttributeError : Can only use .str accessor with string values!
Bu hata genellikle pandas DataFrame’in dize sütunundaki bir modeli değiştirmeye çalıştığınızda ortaya çıkar, ancak üzerinde çalıştığınız sütun aslında bir dize değildir.
Aşağıdaki örnekte bu hatanın pratikte nasıl düzeltileceği gösterilmektedir.
Hata nasıl yeniden oluşturulur?
Aşağıdaki pandalara sahip olduğumuzu varsayalım 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
Şimdi “noktalar” sütunundaki her ondalık basamağı bir boşlukla değiştirmeye çalıştığımızı varsayalım:
#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!
“Noktalar” sütunu bir dize sütunu olmadığı için hata alıyoruz.
Hata nasıl düzeltilir?
Bu hatayı çözmenin en kolay yolu, “points” sütunundaki değerleri değiştirmeyi denemeden önce .astype(str) işlevini kullanmaktır:
#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
“points” sütunundaki her ondalık basamağın değiştirildiğini ve “points” sütunundaki değerleri değiştirmeye çalışmadan önce .astype(str) fonksiyonunu kullandığımız için herhangi bir hata almadığımızı unutmayın.
Not : Change() işlevine ilişkin tüm belgeleri burada bulabilirsiniz.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Pandas’ta KeyError Nasıl Düzeltilir
Nasıl düzeltilir? ValueError: float NaN int’ye dönüştürülemiyor
Nasıl düzeltilir? ValueError: İşlenenler şekillerle yayınlanamadı