【问题标题】:CSV with too few fields in one line does not cause an error in PandasCSV 单行字段太少不会导致 Pandas 出错
【发布时间】:2021-05-31 13:58:24
【问题描述】:

使用pandas 看起来就像这样,即使其中一行的字段较少,我也可以读取 CSV 文件而不会出现错误或警告。

示例 CSV 文件具有树列,但第二行是缺失字段。

A;B;C
D;E
F;G;H

例子:

import pandas
import io

csv = io.StringIO('A;B;C\nD;E\nF;G;H')

df = pandas.read_csv(csv, encoding='utf-8', sep=';',
                     header=None,
                     error_bad_lines=True,
                     warn_bad_lines=True)

print(df)

查看结果的第二行。最后一个字段为空。没有警告。

   0  1    2
0  A  B    C
1  D  E  NaN
2  F  G    H

从文档中我知道,如果有很多字段,pandas 会通知我。

我想要一个警告或错误。我怎样才能捕捉到这种情况?

【问题讨论】:

    标签: pandas csv


    【解决方案1】:

    您可以使用这行代码检查数据框中的任何值是否为NaN

    df.isna().values.any()
    

    如果它返回 True,那么您有一个空白,并执行您的新代码来处理空白。如果它是假的,那么你很适合摇滚。

    【讨论】:

    • 但我希望在某些领域NaN。所以这不是一个指标。
    • 除了 csv 为空白时,您何时期望NaN? CSV 中是否有一些可接受的空白和不可接受的其他空白?
    • 是的,你是对的。当然在某些观察/案例/行中有空白值。
    【解决方案2】:

    答案是pandas 无法检测到类似的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多