Как вы обнаружили, read_csv берет предполагаемую длину из первой строки и рассматривает только слишком длинные строки как "плохие"; строки со слишком малым количеством столбцов дополняются NA
. В зависимости от конкретных обстоятельств, есть несколько решений, которые могут работать для вас:
Пропускать короткие строки.
Если вы знаете, сколько у вас будет строк в 2000 столбцов, и особенно, если оно одинаково для каждого из ваших файлов, используйте skiprows
, чтобы начать чтение в начале раздела из 6000 столбцов.
Прочитайте все и затем отбросьте плохие строки.
Это требует немного усилий, поскольку, как вы обнаружили, pandas использует первую строку файла для определения количества ожидаемых полей; вам нужно добавить заголовок с 6000 столбцов или передать names
с правильной длиной до read_csv
. Это приведет к тому, что ваши 2000 строк столбцов будут заполнены большим количеством значений NA
, после чего вы можете использовать dropna
с соответствующим пороговым значением, чтобы отбрасывать строки с более чем 4000 NA
.
Заранее сделайте предварительную обработку файлов
Если это единовременная ситуация, когда вам нужно только обработать этот текущий набор файлов и не встретить новые в будущем, и у вас есть доступ к командной строке, где находятся файлы, это одна строка awk
чтобы вытащить строки нужной длины:
awk -F, 'NF==6,000" file.csv > fixed_file.csv