Как перевести 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=",")
→ Ссылка