【问题标题】:skip record if empty, blank, or has 'N/A'如果为空、空白或具有“N/A”,则跳过记录
【发布时间】:2019-03-15 14:13:47
【问题描述】:

我试图简单地跳过在我的相关 Excel 文件中找到的记录:空、空白或“N/A”。我希望脚本继续或跳过;如果发现记录为空,则不会停止,N/A。

我正在尝试以下操作,但脚本仍然停留在空白处,或者在 excel 文件中找到 N/A 记录......

    for row in excel_data.itertuples():
        mrn = row.MRN

        if mrn in ("", " ", "N/A", None) or math.isnan(mrn):
            print(f"Invalid record: {row}")
            excel_data = excel_data.drop(excel_data.index[row.Index])
        else:
            num_valid_records += 1

    print(f"Processing #{num_valid_records} records")

更多上下文:

我正在将数据从 excel 文件导入到 pandas 到网页(网络表单)。

  • 我注意到 excel 文件中有几个单元格的值为“N/A”。
  • 在 pandas 数据框中,一些值也输出为“NaT”。
  • 目前我的脚本在排除日期记录时停止 来自一个单元格,但这个单元格包含一个“N/A”。这个条目是 不是必需的,所以我只想在找到 N/A 时跳过它,而不是停止。
  • 我希望它简单地跳过这个问题单元格(即发现空白,或 N/A') 并继续处理其他记录。

【问题讨论】:

  • 我已经添加了更多细节,脚本并没有继续到下一条记录,而是停止了。
  • 它是否进入if 块内?
  • 请将您的数据快照添加为example data。在此处查看更多信息:stackoverflow.com/questions/20109391/…
  • 这里能不能尝试异常处理,如果没有值catch valueerror:
  • 您的预期输出是什么?不要以为你的问题很难解决。很难理解您的数据是什么样的以及您的目标是什么。

标签: python excel pandas selenium


【解决方案1】:

找到真正的阳性并将该记录用作测试。或者,他们可能会在您的 pandas 数据框中评估 nan,因此一个好的 ole .dropna() 可能会为您解决问题。

【讨论】:

  • 谢谢,我真的想放弃它,还是直接跳过它?
【解决方案2】:

我测试了您的代码,并且代码不会在 BlankNaN 值中停止。你的数据应该有问题。只需打印出停止您的代码的行,以查看该列的值是什么。或者,您可以使用以下 python 函数检查空值:is None== None 或类似的东西。

【讨论】:

  • 在 pandas 数据框中,一些记录正在输出 'NaT'
  • NaT 看起来很奇怪。请检查数据的实际值和用户UTF8 格式。也许您的数据编码存在一些问题
猜你喜欢
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 1970-01-01
  • 2018-08-20
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多