删除包含特定模式的行 [Python/Pandas]

4 投票
1 回答
996 浏览
提问于 2025-04-19 22:42

我刚开始学习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

撰写回答