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

时间:2014-09-05 01:02:49

标签: python pandas

我是Python和Pandas的新手,我花了很多时间搜索但是找不到我特定问题的答案。

我有一个数据框,其中前几行只是以'#'开头的注释,后跟通常包含行和列的数据框。我有数百个这样的文本文件,我需要阅读和操作。例如:

'#'blah1

'#'blah2

'#'blah3

Column1 Column2 Column3

a1 b1 c1

a2 b2 c2

我想删除所有以'#'开头的行。有人可以告诉我如何在熊猫中做到这一点,最好吗?

或者,我尝试使用以下代码读入文本文件:

my_input=pd.read_table(filename, comment='#', header=80)

但问题是标题行对于每个文本文件都不同。有没有办法概括并告诉Python我的标题位于以'#'开头的最后一行的下方?

1 个答案:

答案 0 :(得分:3)

更新到pandas 0.14.1或更高版本可以正确跳过注释行。

较旧的版本会将这些行保留为NaN,可以使用.dropna()删除,但会留下一个损坏的标题。

对于旧版本的pandas,您可以使用'skiprows',假设您知道有多少行被评论。

在[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=' ')

出[3]:

Col1    Col2    Col3
0   a1  b1  c1
1   a2  b2  c2