Страницы

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

понедельник, 20 мая 2019 г.

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

Файл 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'


Ответ

Если 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)

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

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