Як виправити в 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *