Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Pandas при чтении CSV файла не парсит числа, содержащие запятую в качестве десятичного разделителя

#python #парсер #pandas #csv #dataframe


Файл csv сохранен в LibreOffice из excel файла. При стандартной загрузке:

map_data = pd.read_csv('map.csv', sep=';')


в нужном столбце получаются данные типа - dtype: object
Если попытаться их перевести в числовые:

pd.to_numeric(map_data['Dist_Loc'])


выдается следующая ошибка:

ValueError: Unable to parse string "3,095" at position 0


Если попытаться перевести в числовые другим способом:

map_data['Dist_Loc'].astype(np.float)


Тоже возникает ошибка:

ValueError: could not convert string to float: '6,157'

    


Ответы

Ответ 1



Если 6,157 - это 6.157, т.е. , - десятичный разделитель, то можно воспользоваться параметром decimal df = pd.read_csv('map.csv', sep=';', decimal=',') если , это разделитель разрядов и 6,157 - это 6157, то можно воспользоваться параметром thousands: df = pd.read_csv('map.csv', sep=';', thousands=',') Ссылка на документацию... Pandas также замечательно читает напрямую из Excel: df = pd.read_excel(filename)

Комментариев нет:

Отправить комментарий