Pandas'ta nasıl düzeltilir: dize kayan noktaya dönüştürülemiyor
Pandaları kullanırken karşılaşabileceğiniz yaygın bir hata:
ValueError : could not convert string to float: '$400.42'
Bu hata genellikle bir dizeyi pandalarda kayan konuma dönüştürmeye çalıştığınızda, dize aşağıdakilerden birini veya daha fazlasını içerdiğinde ortaya çıkar:
- Boşluklar
- Virgüller
- Özel karakterler
Bu durumda, dizeyi kayan noktaya dönüştürmeden önce bu karakterleri dizeden kaldırmalısınız.
Aşağıdaki örnekte bu hatanın pratikte nasıl çözüleceğ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 ({' store ': ['A', 'B', 'C', 'D'], ' revenue ': ['$400.42', '$100.18', '$243.75', '$194.22']}) #view DataFrame print (df) store revenue 0 A $400.42 1 B $100.18 2 C $243.75 3D $194.22 #view data type of each column print ( df.dtypes ) store object revenue object dtype:object
Şimdi gelir sütununu bir dizeden kayan noktaya dönüştürmeye çalıştığımızı varsayalım:
#attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)
ValueError : could not convert string to float: '$400.42'
Gelir sütununun dizelerinde dolar işareti bulunduğundan hata alıyoruz.
Hata nasıl düzeltilir?
Bu hatayı çözmenin yolu, dönüştürmeyi gerçekleştirmeden önce gelir sütunundaki dolar işaretlerini hiçbir şeyle değiştirmek için change() işlevini kullanmaktır:
#convert revenue column to float
df[' revenue '] = df[' revenue ']. apply ( lambda x: float(x. split ()[ 0 ]. replace (' $ ', '')))
#view updated DataFrame
print (df)
store revenue
0 to 400.42
1 B 100.18
2 C 243.75
3 D 194.22
#view data type of each column
print ( df.dtypes )
store object
income float64
dtype:object
Gelir sütununu bir dizeden kayan sütuna dönüştürebildiğimizi ve dönüştürmeyi yapmadan önce dolar işaretlerini kaldırdığımız için herhangi bir hata almadığımızı unutmayın.
Ek kaynaklar
Aşağıdaki eğitimlerde Python’daki diğer yaygın hataların nasıl düzeltileceği açıklanmaktadır:
Python’da Nasıl Düzeltilir: ‘numpy.ndarray’ nesnesi çağrılabilir değil
Nasıl düzeltilir: TypeError: ‘numpy.float64’ nesnesi çağrılabilir değil
Nasıl Onarılır: Tür Hatası: Beklenen Dize veya Bayt Nesnesi