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

熊猫:当一行不完整时引发错误

呼延原
2023-03-14

熊猫拒绝读取逗号过多的文件(第一行后):

正在尝试读取以下内容:

col1,col2,col3
foo,1,2
bar,2,3
zob,0,3,4

会给我一个错误吗

然而,无论我在read_csv中尝试了什么选项,熊猫都接受以下选项:

col1,col2,col3
foo,1,2
bar,2,3
zob,0

只考虑最后一行的COL3中的值为空。

当发生这种情况(一行中的字段太少)时,是否有任何方法引发异常?(在我的例子中,这意味着文件源有错误,需要再次下载文件)。

它似乎只涉及error_bad_lines逗号太多的行。

在使用read_csv之前,我可以分别计算每行的逗号数,但我想知道pandas中是否存在一个选项,因为它看起来更自然/更易于代码可读性。

共有1个答案

逑衡
2023-03-14

更新:

文件不包含任何NaN值

In [85]: pd.read_csv(fn)
Out[85]:
  col1  col2  col3
0  foo     1   2.1
1  bar     2   3.1
2  zob     0   NaN

因此,如果满足以下条件,您可以引发异常:

In [86]: pd.read_csv(fn).isnull().any().any()
Out[86]: True

旧答案:

可能的解决办法:

考虑以下输入CSV文件:

col1,col2,col3
foo,1,2.1
bar,2,3.1
zob,0

以下工作:

In [50]: pd.read_csv(fn, dtype={'col3':'float'})
Out[50]:
  col1  col2  col3
0  foo     1   2.1
1  bar     2   3.1
2  zob     0   NaN

但是,如果我们指示Pandas不要将空字符串视为NaN,那么它将抛出一个异常:

In [51]: pd.read_csv(fn, na_values=['NAN','NaN','#NA'], keep_default_na=False, dtype={'col3':'float'})
...
skipped
...
ValueError: could not convert string to float:
 类似资料:
  • 我有一个CSV文件,有三列:col1,col2,col3。我试图在这个文件中附加一个只包含col2的数据框 结果是: 我希望: 有可能以某种方式实现这一点吗?

  • 问题内容: 我很好奇,为什么不支持,而与这两个工作。 我希望以与Python索引约定一致的方式进行工作。有设计上的原因不支持按单个整数索引行吗? 问题答案: 回显@HYRY,请参阅0.11中的新文档 http://pandas.pydata.org/pandas- docs/stable/indexing.html 在这里,我们有了新的运算符,以显式支持仅整数索引,并且显式仅支持标签索引 例如,想

  • 问题内容: 假设我用两列(一个DateTime)和一个(整数)创建了一个熊猫DataFrame 。现在,我想根据第一列()中的值创建一个DatetimeIndex : 一切似乎都正常,除了我打印DataFrame时,它说它具有Int64Index。 我是在做错事还是不正确理解Indeces的概念? 问题答案: 没有就位(除非您通过)。否则一切正确 同样作为参考,在即将到来的0.12版本(下周)中,

  • 我得到以下错误 关于代码 我试图将的列连接到的列。 对于这些打印语句 我得到以下输出: 你知道是什么问题吗?为什么索引会成为一个问题?索引应该是相同的,因为我关注的是列,而不是行。列值似乎完全不同。 谢谢

  • 我正在从pandas输出一个csv文件,其中包含一些用于latex报告的调查文本。一些响应在其响应中带有逗号,因此熊猫将数据输出为 通过将字段用双引号括起来,显然可以处理字段中的逗号。 我希望上面看起来像这样: 通过将所述字段包装在{}中,因为这是latex包可以理解的分隔符。 有没有办法告诉熊猫。要做这个吗? 我已经尝试了以下方法 当然,当我需要“}”时,它会用“{”关闭文本包装 更新当我使用p

  • 我开始学习熊猫,发现了一个我似乎无法解决的问题。我正在从csv文件加载数据,需要删除一些与几个字符串匹配的行。 CSV: 我所尝试的: 但我得到的错误如下: 我错过了什么?另外,如果我想传递一个列表并从列表中删除所有匹配字符串的行,该怎么办?例子: