Чтение файла с отсутствующими значениями в python pandas
Я пытаюсь прочитать .txt с отсутствующими значениями, используя pandas.read_csv. Мои данные имеют формат:
10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686
с тысячами образцов с одинаковым именем точки, позиции gps и другими показаниями.
Я использую код:
myData = read_csv('~/data.txt', sep=',', na_values='')
Код неверен, так как na_values не дает NaN или другой индикатор. Столбцы должны иметь одинаковый размер, но я заканчиваю с разной длиной.
Я не знаю, что именно следует вводить после na_values (пробовал все разные вещи).
Спасибо
Ответы
Ответ 1
Параметр na_values
должен быть "похож на список" (см. этот ответ).
Строка "list like" так:
na_values='abc' # would transform the letters 'a', 'b' and 'c' each into 'nan'
# is equivalent to
na_values=['a','b','c']
Аналогично:
na_values=''
# is equivalent to
na_values=[] # and this is not what you want!
Это означает, что вам нужно использовать na_values=['']
.
Ответ 2
Какую версию pandas вы используете? Интерпретация пустой строки как NaN является поведением по умолчанию для pandas и, по-видимому, синтаксически разбирает пустые строки в вашем фрагменте данных как в v0.7.3, так и в текущем master без использования параметра na_values
вообще.
In [10]: data = """\
10/08/2012,12:10:10,name1,0.81,4.02,50;18.5701400N,4;07.7693770E,7.92,10.50,0.0106,4.30,0.0301
10/08/2012,12:10:11,name2,,,,,10.87,1.40,0.0099,9.70,0.0686
"""
In [11]: read_csv(StringIO(data), header=None).T
Out[11]:
0 1
X.1 10/08/2012 10/08/2012
X.2 12:10:10 12:10:11
X.3 name1 name2
X.4 0.81 NaN
X.5 4.02 NaN
X.6 50;18.5701400N NaN
X.7 4;07.7693770E NaN
X.8 7.92 10.87
X.9 10.5 1.4
X.10 0.0106 0.0099
X.11 4.3 9.7
X.12 0.0301 0.0686
Ответ 3
У меня та же проблема, но данное решение не решает мою проблему, я получаю сообщение об ошибке:
ParserError: Ошибка токенизации данных. Ошибка C: ожидается 156 полей в строке 10021, увидел 273
PS: мой CSV файл содержит около 300 тыс. Строк и 600 столбцов, это что-то вроде этого
P160, P230 ,,,
P14, P0, P49, P41 ,,