2016-10-03 1 views
2

У меня есть набор данных с 51 347 строками. При импорте данных с помощью панд и установите разделитель на «|» , Я теряю 394 строки.Pandas пропускает строки при импорте с использованием разделителя = "|"

import pandas as pd 
df = pd.read_csv("Basin11.txt", sep='|', error_bad_lines=False, 
dtype={'Start Date': str, 'Greater Than/Less Than': str, 
'Parameter Code': float, 'Start Time': str, 'Start Depth': float, 'Composite Category': str, 
'Composite Type': str}) 
print(len(df.index)) 

Если удалить SEP переменных, данные не будут загружаться несколько столбцов, но будут загрузить нужное количество строк. Кажется, это проблема для этого файла. Basin11.txt File

Кто-нибудь знает, почему я теряю данные?

+0

Я бы предположил, что около 394 строк имеют свою колонку со свободным текстом cont обезвреживание | , и error_bad_lines = False игнорировать эти строки – Boud

+0

Я попытался удалить error_bad_lines = False, но это не влияет на длину. Мы удалили каждый из аргументов индивидуально без эффекта, кроме sep = '|'. – Will

ответ

2

Я начал просматривать ваш входной файл и обнаружил ряд ошибок, которые могут привести к «отсутствующим строкам».

Комментарии к линиям 3491 и 9805 имеют отверстие ", но отсутствуют закрытие ". Это приведет к совпадению проблем, включая следующие строки как часть тела комментария. Когда я начал их исправлять, подсчет строк начал расти. Вероятно, есть еще больше случаев.

Кроме того, некоторые строки имеют двойные двойные кавычки ("") для открытия и закрытия комментариев. Например:

"" зеленый, мед прилив, 10-15 миль в час ветры ""

Edit: я добавил следующий код:

for comment in df['Comments'].values: 
    print(comment) 

Тогда выбежала python3 sample.py | grep '|' | wc -l, чтобы найти количество комментариев, которое содержало |, и получено 394 (Количество строк, которые вам не хватает)

+0

Спасибо, что исправил это! Затем мне нужно было добавить аргумент quoting = 3 в файл read_csv. – Will

Смежные вопросы