【发布时间】:2014-10-29 21:29:59
【问题描述】:
我是 Python 和 Pandas 的新手,我花了很多时间搜索,但找不到特定问题的答案。
我有一个数据框,其中前几行只是以“#”开头的 cmets,然后是包含行和列的常用数据框。我有数百个这样的文本文件需要阅读和操作。例如:
'#'blah1
'#'blah2
'#'blah3
列 1 列 2 列 3
a1 b1 c1
a2 b2 c2
等等
我想删除所有以“#”开头的行。有人可以告诉我如何在 Pandas 中执行此操作吗?
或者,我尝试使用以下代码读取文本文件:
my_input=pd.read_table(filename, comment='#', header=80)
但问题是每个文本文件的标题行不同。有没有办法概括并告诉 Python 我的标题位于以“#”开头的最后一行下方?
【问题讨论】:
-
我认为这可能是一个错误,我尝试使用 comment="'" (因为您的行以它开头?)...read_csv docs 的评论似乎很清楚这应该有效。
-
尚未合并:github.com/pydata/pandas/pull/7470(可以在我认为在 master 中修复的行开头的注释)
-
你用的是什么版本的熊猫?通常这应该在 0.14.1 中工作(杰夫,我们拆分了那个 PR,评论部分已经在 0.14.1 中)。在文档字符串之后,
headerkwarg 应该忽略完全注释的行。 -
@joris 上面提到的 0.14.1,文档说:“如果在一行的开头找到,该行将被完全忽略。”和“此外,参数标题会忽略完全注释的行”。
-
所以按照文档,以上应该是可能的,不是吗?提高什么?使用 0.14.1 这对我有用:
df = pd.read_csv(StringIO(s), sep=' ', comment="'")