Я пытаюсь прочитать файл csv со следующими значениями [23, " 5,000.00 ", A]
Мне нужно прочитать число с запятой, но я не могу этого сделать, даже если передам десятичную дробь и кавычки.
Я читаю CSV, который df.read_csv(path, delimiter=',', quotechar='"', decimal=',', thousands='.', dtype=str)
Я получаю следующий вывод, если я запускаю df.values.tolist()
=> ['23', ' " 5', '000.00 "', 'A']
В чем может быть проблема?
Столбец с данным типом всегда разный. Поэтому я не могу преобразовать его на основе имени столбца.
dtype=str
следует оставить в виде строки, так как это необходимо на будущее.
@BigBen После записи в CSV я открываю его в текстовом редакторе или Excel. Выход такой же
Попробуйте указать параметры quotechar
и decimal
для df.read_csv
: dataframe.to_csv(buffer, delimiter = ",", quotechar='"', decimal = ",", encoding = "utf-8", index=False)
@ibmx Только что проверил. Это не сработало. Все тот же вывод
Вы также можете попробовать изменить разделитель на что-то другое, например "|"
или ";"
.
Я заметил, что, вероятно, это проблема с чтением. Я собираюсь обновить вопрос
@ibmx спасибо за предложение. Это не помогло. Все еще получаю ['23', ' " 5', '000.00 "', 'A']
Вы должны установить значение skipinitialspace.
У меня есть следующий код:
import pandas as pd
result = pd.read_csv("data.csv", sep=',', quotechar='"', skipinitialspace=True)
print(result.columns)
И мой data.csv выглядит так: 23; "5000,0"; А
Выполнение приведенного выше кода дает такой результат: Индекс([u'23', u' 5000,0 ', u'A'], dtype='объект')
skipinitialspace удалит лишние пробелы из « 5,000.0 ». Если вы попытаетесь удалить лишние пробелы вручную, то вы можете не указывать этот параметр, и он также будет работать нормально.
Вы открываете этот CSV в Excel?