Подтвердить что ты не робот

Python Pandas read_csv пропустить строки, но сохранить заголовок

Мне трудно понять, как пропустить n строк в файле csv, но сохраните заголовок, который является 1 строкой.

То, что я хочу сделать, это перебрать, но сохранить заголовок из первой строки. skiprows делает заголовок первой строкой после пропущенных строк. Каков наилучший способ сделать это?

data = pd.read_csv('test.csv', sep='|', header=0, skiprows=10, nrows=10)
4b9b3361

Ответ 1

Вы можете передать список номеров строк в skiprows вместо целого. Затем читатель проигнорирует эти строки в списке.

Предоставляя функции целое число 10, вы просто пропускаете первые 10 строк.

Чтобы сохранить первую строку 0 (как заголовок), а затем перейти к строке 10, вы можете написать:

pd.read_csv('test.csv', sep='|', skiprows=range(1, 10))

Ответ 2

Отличные ответы уже.. Я как-то чувствую необходимость добавить обобщенную форму здесь.. Рассмотрим этот сценарий:

Скажем, ваш xls/csv имеет ненужные строки в верхних 2 рядах (строка № 0,1). Строка № 2 (3-я строка) является реальным заголовком, и вы хотите загрузить 10 строк, начиная со строки № 50 (т.е. 51-й строки). Вот фрагмент: -

pd.read_csv('test.csv', header=2, skiprows=range(3, 50), nrows=10)

Ответ 3

Чтобы расширить ответ skiprows аргумент skiprows принимает список чисел, который определяет, какие строки пропустить. Так:

pd.read_csv('test.csv', sep='|', skiprows=range(1, 10))

такой же как:

pd.read_csv('test.csv', sep='|', skiprows=[1,2,3,4,5,6,7,8,9])

Лучший способ игнорировать определенные строки - создать список игнорирования (вручную или с помощью функции, такой как range которая возвращает список целых чисел), и передать ее skiprows.

Ответ 4

Если вы просматриваете длинный CSV файл, вы можете использовать аргумент chunksize. Если по какой-либо причине вам необходимо выполнить его вручную, вы можете попробовать следующее, если вы знаете, сколько итераций вам нужно пройти:

for i in range(num_iters):
    pd.read_csv('test.csv', sep='|', header=0, 
                 skiprows = range(i*10 + 1, (i+1)*10), nrows=10)

Ответ 5

Если вам нужно пропустить/отбросить определенные строки, скажем, первые 3 строки (т.е. 0,1,2), а затем еще 2 строки (например, 4,5). Вы можете использовать следующее, чтобы сохранить строку заголовка:

df = pd.read_csv(file_in, delimiter='\t', skiprows=[0,1,2,4,5], encoding='utf-16', usecols=cols)