假设我有一个包含数百万行的大文件。前面的300+(可变数量)行包含关于文件的信息,然后是数据前的标题行。我不知道标题行在哪一行,但我知道它以什么开头。以下是我的数据样例:
我曾天真地认为
#This File contains some cool suff
#We will see what line the header is on
#Maybe it is in this line
#CHROM POS ID
1 100 17
2 200 18
2 300 18
头部行为#CHROM POS ID
这是我尝试的代码,但它返回list index out of range
:
database = pd.read_table(infile, header=[num for num,line in enumerate(infile) if line.startswith("#CHROM")])
我曾天真地认为
pd.read_table
的操作方式与with open()
相同,这可能起了作用。任何帮助都将不胜感激!
infile
是一个字符串还是一个文件对象? - Jarad#CHROM
(包括“#”),否则这不是一个有效的csv文件。如果标题行已经去掉了“#”(例如,通过预处理),则可以在pd.read_csv
中简单地设置comment ='#'
。 如果第一列的名称确实是#CHROM
,则最好选择另一个字符,因为这不能让您与注释行区分开来(除非这些行不以#
开头(此处添加了附加空格) ,那么您可以设置comment ='#'
)。 - a_guest