Прямой способ нарезать строку с помощью f.read(), чтобы в конечном итоге прочитать в csv как кадр данных pandas

У меня есть файл .csv, который я хочу открыть и в конечном итоге сохранить его как кадр данных pandas. Этот файл имеет некоторый ненужный текст над фреймом данных как таковым, чей заголовок начинается со строки Sample_ID. Я написал код, который выполняет эту работу в несколько шагов, и теперь мне интересно, есть ли более элегантный способ сделать это. Вот мой код

import pandas as pd
import re
from io import StringIO

with open('SampleSheet.csv') as f:
    ## read in the .csv file as a string
    step1 = f.read()

    ## subset the step1 file
    # define where my df should start
    start = 'Sample_ID'
    step2 = step1[step1.index(start):]

    ## read in step2 as a pandas dataframe with stringio
    step3 = pd.read_csv(StringIO(step2))

Мне было интересно, есть ли способ нарезать напрямую с помощью f.read(), чтобы у меня уже было на один шаг меньше.

Я также пытался использовать pd.read_csv() с skiprows, но мне трудно присвоить номер строки, который начинается с Sample_ID


person BCArg    schedule 21.12.2018    source источник


Ответы (1)


Вы можете импортировать и читать файл, используя только read_csv(), следующим образом:

df  =   pd.read_csv('SampleSheet.csv', header=3)

где заголовок — это количество строк, которые вы хотите пропустить в верхней части файла перед началом набора данных.

person Ch3mZ_ZA    schedule 21.12.2018
comment
Дело в том, что количество ненужных строк варьируется от разных файлов, которые у меня есть, поэтому я должен искать закономерность Sample_ID - person BCArg; 21.12.2018
comment
Ни один из них не справится с этой задачей, так как количество ненужных строк (которые влияют как на header, так и на skiprows) во всех SampleSheet.csv, которые я хочу прочитать, различается. - person BCArg; 21.12.2018