Як виправити в pandas: неможливо перетворити рядок у float
Поширена помилка, з якою ви можете зіткнутися під час використання панд:
ValueError : could not convert string to float: '$400.42'
Ця помилка зазвичай виникає, коли ви намагаєтеся перетворити рядок на плаваючий у pandas, коли рядок містить один або кілька з наступного:
- Простори
- Коми
- Спеціальні символи
Коли це відбувається, ви повинні спочатку видалити ці символи з рядка, перш ніж перетворювати його на число з плаваючою точкою.
У наступному прикладі показано, як вирішити цю помилку на практиці.
Як відтворити помилку
Припустімо, що у нас є наступні pandas 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
Тепер припустімо, що ми намагаємося перетворити стовпець доходу з рядка на число з плаваючою точкою:
#attempt to convert 'revenue' from string to float
df[' revenue '] = df[' revenue ']. astype (float)
ValueError : could not convert string to float: '$400.42'
Ми отримуємо повідомлення про помилку, оскільки стовпець доходу містить знак долара в рядках.
Як виправити помилку
Щоб усунути цю помилку, скористайтеся функцією replace() , щоб замінити знаки долара в стовпці доходу нічим перед виконанням перетворення:
#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
Зауважте, що ми можемо перетворити стовпець доходу з рядка на плаваючий, і ми не отримуємо жодних помилок, оскільки ми видалили знаки долара перед виконанням перетворення.
Додаткові ресурси
У наступних посібниках пояснюється, як виправити інші типові помилки в Python:
Як виправити в Python: об’єкт «numpy.ndarray» не можна викликати
Як виправити: TypeError: Об’єкт ‘numpy.float64’ не можна викликати
Як виправити: помилка типу: очікуваний рядок або об’єкт Bytes