Реальные строки файла CSV - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть CSV-файл, в котором столько строк, и я хочу получить количество строк в моей программе python. Когда я использую wc -l или vim файл и номер набора для подсчета количества строк, я получаю 7125393. количество строк при запуске wc -l

Но когда я использую pandas для анализа csv и использования .size для получения количества строк. Возвращает 6842536. Затем я использую csv, который является встроенным пакетом python для анализа csv и использования для l oop чтобы подсчитать количество строк, он также возвращает 6842536.

Я не знаю, почему будет разница между python и Ubuntu, когда я подсчитываю количество строк в файле CSV.

1 Ответ

3 голосов
/ 23 апреля 2020

Вместо простого вызова wc -l, начните с:

cat your_input.csv | sed '/^\s*$/d' | wc -l

Таким образом, вы не будете считать строки, которые либо пусты, либо содержат только «белые» символы (или, возможно, sed '/^$/d', чтобы пропустить только пустые строки).

Помните, что read_csv имеет параметр skip_blank_lines, который по умолчанию равен True.

Редактировать

Другая возможность заключается в том, что исходный файл может содержат строки, оканчивающиеся на \. Такие случаи read_csv обрабатываются как «продолжение этой строки в следующей строке», поэтому эти 2 (или более) строки содержат данные для одной строки в результирующем кадре данных.

Приведенное выше правило относится также к строке title .

Я попробовал входной файл со следующим содержимым:

a,b,\
c
aa1,12,30
aa2,13,\
32

aa3,14,34
aa4,15,36
aa5,16,38

, чтобы:

  • строка aa2,13, имеет продолжение в следующей строке,
  • следующая строка пуста (я пробовал также версию, которая содержит только пробелы) .

Такой файл, считанный с read_csv , дает DataFrame с 5 строками, но wc -l будет считать 9 строками Вот. Поскольку параметр skip_blank_lines имеет значение по умолчанию ( False ), и пустые строки, и строки, содержащие только пробелы, также пропускаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...