当前位置: 首页 > 知识库问答 >
问题:

pandas.read_csv:如何跳过注释行

池麒
2023-03-14

我想我误解了阅读的意图。如果我有一个像“j”这样的文件

# notes
a,b,c
# more notes
1,2,3

我怎样才能看到熊猫。读取此文件,跳过任何“#”注释行?我在帮助中看到,不支持行的“注释”,但它表示应返回空行。我看到一个错误

df = pandas.read_csv('j', comment='#')

数据标记化出错。C错误:预期第2行中的1个字段,锯3

我现在在

In [15]: pandas.__version__
Out[15]: '0.12.0rc1'

在版本“0.12”上。0-199-g4c8ad82':

In [43]: df = pandas.read_csv('j', comment='#', header=None)

数据标记化出错。C错误:预期第2行中的1个字段,锯3

共有3个答案

楚知
2023-03-14

我使用的是0.13版的熊猫。1而且csv中的这个评论问题仍然困扰着我。

以下是我目前的工作区:

def read_csv(filename, comment='#', sep=','):
    lines = "".join([line for line in open(filename) 
                     if not line.startswith(comment)])
    return pd.read_csv(StringIO(lines), sep=sep)

否则使用pd。读取_csv(文件名,注释='#')I get

pandas.parser.CParserError:标记数据出错。C错误:预期第16行中的1个字段,锯3。

王磊
2023-03-14

一种解决方法是指定skiprows以忽略前几个条目:

In [11]: s = '# notes\na,b,c\n# more notes\n1,2,3'

In [12]: pd.read_csv(StringIO(s), sep=',', comment='#', skiprows=1)
Out[12]: 
    a   b   c
0 NaN NaN NaN
1   1   2   3

否则,read\u csv会有点困惑:

In [13]: pd.read_csv(StringIO(s), sep=',', comment='#')
Out[13]: 
        Unnamed: 0
a   b            c
NaN NaN        NaN
1   2            3

这似乎是0.12中的情况。0,我已经提交了错误报告。

正如Viktor所指出的,你可以在事实发生后使用dropna删除NaN...(最近有一个公开的问题,评论行被完全忽略):

In [14]: pd.read_csv(StringIO(s2), comment='#', sep=',').dropna(how='all')
Out[14]: 
   a  b  c
1  1  2  3

注意:默认索引将“泄露”缺少数据的事实。

臧欣怿
2023-03-14

所以我相信在最新版本的熊猫(版本0.16.0),你可以把注释='#'参数放入pd.read_csv,这应该跳过注释行。

这些github问题表明您可以做到这一点:

  • https://github.com/pydata/pandas/issues/10548
  • https://github.com/pydata/pandas/issues/4623

请参阅read\u csv上的文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html

 类似资料:
  • 问题内容: 我认为我误会了read_csv的意图。如果我有文件“ j”,例如 我如何pandas.read_csv这个文件,跳过任何’#’注释行?我在帮助行的注释中看到它不被支持,但是它指示应该返回一个空行。我看到一个错误 CParserError:标记数据时出错。C错误:第2行中应有1个字段,看到了3个 我目前在 在版本‘0.12.0-199-g4c8ad82’上: CParserError:标

  • 问题内容: 有什么方法可以通过JPA注释指定SQL注释?表和列的注释。 问题答案: 有什么方法可以通过JPA注释指定SQL注释?表和列的注释。 否。如果要定义表和列注释,最好的选择是在生成的DDL中根据事实进行操作,然后再对数据库执行操作。

  • 问题内容: 用csv.DictReader处理CSV文件很棒- 但是我有带注释行的CSV文件(在行的开头用哈希表示),例如: csv模块不包含任何跳过此类行的方法。 我可以轻松地做些骇人听闻的事情,但是我想有一种将csv.DicReader包装在其他迭代器对象周围的好方法,该对象会进行预处理以丢弃行。 问题答案: 实际上,这与:

  • 问题内容: 是否可以通过注释处理器访问带有注释的元素? 是否可以通过注释处理器访问带注释的类型边界? 高度赞赏我错过的相关文档的链接。 内容: 注释: 一个示例类: 处理器: 在classpath 上使用编译以上内容将显示消息,但永远不会调用该方法。当方法参数中存在注释时,使用注释向处理器添加另一个注释可以正常工作。如果方法参数带有注释,则过程将再次忽略该元素。 问题答案: 该注释是有点棘手,因为

  • 问题内容: 我需要知道如何在运行时阅读Javadoc注释(可能是通过反射吗?) 说我有以下功能: 在运行时,我可以通过反射获得有关此函数的更多信息。但是无法阅读注释。所以问题是,如何在运行时阅读此 javadoc 注释。 问题答案: 考虑使用注释而不是Javadoc并编写注释处理器。

  • 问题内容: 我试图通过注释将整个JSF托管Bean注入另一个托管Bean非常相似,但是我正在注入Bean,而不是Servlet)。这就是我在做什么: 不起作用(JSF 2.0 / Mojarra 2.0.3): 有没有可能或者我需要通过编程方式进行注射? 问题答案: 您需要添加setter和getter 当将解析并注入依赖项时,它将使用setters注入,因此适当的setters / getter