Python Pandas read_csv пропустить строки, но сохранить заголовок
Мне трудно понять, как пропустить n строк в файле csv, но сохраните заголовок, который является 1 строкой.
То, что я хочу сделать, это перебрать, но сохранить заголовок из первой строки. skiprows
делает заголовок первой строкой после пропущенных строк. Каков наилучший способ сделать это?
data = pd.read_csv('test.csv', sep='|', header=0, skiprows=10, nrows=10)
Ответы
Ответ 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)