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ı

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir