Чтение файла с отсутствующими значениями в 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 ,,