删除包含特定模式的行 [Python/Pandas]
我刚开始学习Python和Pandas,花了很多时间找资料,但还是没能找到解决我具体问题的方法。
我有一个数据表,前面几行都是以'#'开头的注释,后面才是正常的数据表,里面有行和列。我有好几百个这样的文本文件需要读取和处理。例如:
'#' blah1
'#' blah2
'#' blah3
Column1 Column2 Column3
a1 b1 c1
a2 b2 c2
等等。
我想删除所有以'#'开头的行。有没有人能告诉我在Pandas中怎么做?
另外,我试着用下面的代码来读取文本文件:
my_input=pd.read_table(filename, comment='#', header=80)
但问题是,每个文本文件的表头行都不一样。有没有办法让Python知道我的表头在最后一行以'#'开头的下面?
1 个回答
3
升级到 pandas 0.14.1 或更高版本后,你就可以正确地跳过注释行了。
在旧版本中,注释行会被当作 NaN(缺失值)处理,你可以用 .dropna() 来删除这些行,但这样会导致表头出错。
在旧版本的 pandas 中,你可以使用 'skiprows',前提是你知道有多少行是注释。
In[3]:
s = "# blah1\n# blah2\n# blah3\nCol1 Col2 Col3\na1 b1 c1\na2 b2 c2\n"
pd.read_table(StringIO(s), skiprows=3, sep=' ')
Out[3]:
Col1 Col2 Col3
0 a1 b1 c1
1 a2 b2 c2