Вы должны удалить запятые, они не являются числовым форматом, распознаваемым Python. Поэтому, учитывая список, который вы дали как возможный ввод:
str_num = ['309.00 ', ' 38.00 ', ' 12,486.00 ', '6,108.00', ' 2,537.00']
, вы должны сделать это:
list(map(lambda s: float (s.replace (',', '')), str_num))
, и вы получите свой список с плавающей точкой:
[309.0, 38.0, 12486.0, 6108.0, 2537.0]
Примечание : вам не нужно делать str.strip()
, потому что пробелы автоматически удаляются из операции приведения с плавающей точкой.
Следуя вашему конвейеру, перед преобразованием в float, вам нужно сделать:
member_clean['TotalDepositBalances'] = member_clean['TotalDepositBalances'].str.replace(',', '')
Или вы можете запустить весь конвейер в одну строку кода следующим образом:
member_clean['TotalDepositBalances'] = member_clean['TotalDepositBalances'].replace('$', '').replace(',', '').astype(float)
Дополнительно: Производительность
Здесь вынайдет тесты, которые представляют сравнение различных методов для выполнения множественных замен, вставленных в строку. Удивительно использовать replace
в каскаде (как в вашем конвейере), он оказывается более эффективным, чем регулярное выражение для этого типа операций. Дайте ему чтение.