Pandas 是否可以解析注释数未知的csv文件、要跳过的标题和行

Pandas 是否可以解析注释数未知的csv文件、要跳过的标题和行,pandas,csv,parsing,comments,Pandas,Csv,Parsing,Comments,我有一个文件,它有未知数量的注释,后面是一个标题,后面是第二行,与数据类型有关,但对我来说实际上只是垃圾 # Comment Line # Another comment -- there could be lots index value not wanted 1 10 2 20 通过对注释数量的先验知识(哪种类型违反了注释的概念),用户可以读取文件 pandas pd.read_csv(fname,header=0,comment='#',skiprows=[3]) 但就我而言,数字3是

我有一个文件,它有未知数量的注释,后面是一个标题,后面是第二行,与数据类型有关,但对我来说实际上只是垃圾

# Comment Line 
# Another comment -- there could be lots
index value
not wanted
1 10
2 20
通过对注释数量的先验知识(哪种类型违反了注释的概念),用户可以读取文件
pandas pd.read_csv(fname,header=0,comment='#',skiprows=[3])

但就我而言,数字3是未知的。我只知道标题是索引0不计算注释,我知道不需要的行是索引1不计算注释<代码>标题按照我想要的方式工作,但不是
skiprows
。有没有办法利用这些信息轻松地读取文件?我所说的“轻松”,是指打开文件,计算初步评论,然后阅读以下内容:

ncomment = 0
crows = []
fname = "sample.csv"
with open(fname,"r") as f:
    while f.readline().startswith("#"):
        crows.append(ncomment)
        ncomment += 1
crows = crows + [ncomment+1]
data = pd.read_csv(fname,header=0,skiprows = crows, index_col=0,delim_whitespace = True)
print(data)

您可以使用
标题
+
注释
获取多索引,然后删除不需要的级别<代码>标题是在删除注释后计算的,因此它总是
[0,1]
。(我使用的是
delim_whitespace=True
,因为您的示例数据中没有任何
,'
s)

我们可以在同一行:

df = (pd.read_csv('sample.csv', comment='#', header=[0, 1], delim_whitespace=True)
        .droplevel(1, axis=1))
#   index  value
#0      1     10
#1      2     20

您可以使用
标题
+
注释
获取多索引,然后删除不需要的级别<代码>标题是在删除注释后计算的,因此它总是
[0,1]
。(我使用的是
delim_whitespace=True
,因为您的示例数据中没有任何
,'
s)

我们可以在同一行:

df = (pd.read_csv('sample.csv', comment='#', header=[0, 1], delim_whitespace=True)
        .droplevel(1, axis=1))
#   index  value
#0      1     10
#1      2     20