Я обнаружил, что это успешно для моего конкретного приложения поиска заголовка в большом текстовом файле.Сначала напишите функцию для чтения построчно, пока не будет найдено совпадение:
def headerFinder(infile):
with open(infile) as f:
for num,line in enumerate(f):
if line.startswith("#CHROM"):
return num
Этот первый блок кода будет перечислять ваши строки в файле и находить совпадающую строку, а затем вы сможете фактически передать функциювызов функции pd.read_table()
выполняется следующим образом:
def tableReader(infile, *argv):
df = pd.read_table(infile, header=headerFinder(infile), usecols=argv)
return df
Поскольку мой инфил имеет большой размер, есть также более 300 столбцов, поэтому я нашел, что это хороший способ передать переменное количество заголовков, примервызова функции:
tableDF = tableReader(input_file, '#CHROM', 'POS', 'ID', 'REF', 'ALT', 'INFO')
Итак, вся моя маленькая программа выглядит следующим образом:
import pandas as pd
import sys
input_file = sys.argv[1]
def headerFinder(infile):
with open(infile) as f:
for num,line in enumerate(f):
if line.startswith("#CHROM"):
return num
def tableReader(infile, *argv):
df = pd.read_table(infile, header=headerFinder(infile), usecols=argv)
return df
tableDF = tableReader(input_file, '#CHROM', 'POS', 'ID', 'REF', 'ALT', 'INFO')
#to view as test of success
(tableDF[:10]).to_csv('./test_table', sep='\t', index=False)