Как перевести str в int или float?
Хочу посчитать в Pandas кое-какие значения. Загружаю файл, а там все значения отображаются как object.
Попытался перевести с помощью:
df = df.col.astype('float')
И далее ошибка:
ValueError: could not convert string to float: '4097575,00000'
А когда пытаюсь перевести в int также выдает ошибку значения:
ValueError: invalid literal for int() with base 10: '4097575,00000'
Ответы (2 шт):
Автор решения: Dmitriy Novikov
→ Ссылка
Все логично, astype('float') обрабатывает только валидные значения, в вашем случае "," должна быть заменена на ".", например вот так
df[col].apply(lambda x: str(x).replace(",", ".")).astype('float')
Автор решения: MaxU
→ Ссылка
Похоже при сохранении CSV файла в качестве десятичного разделителя использовалась запятая, вместо точки.
Воспользуйтесь параметром pd.read_csv(..., decimal=","):
df = pd.read_csv(..., sep=";", decimal=",")
