【问题标题】:Remove Empty DataFrame in python list删除 python 列表中的空 DataFrame
【发布时间】:2022-01-10 07:42:35
【问题描述】:

我有一个以“空数据框”开头的列表。当我尝试导出此列表时 to_csvto_excel,一个

“NoneType 对象没有属性”

AttributeError 结果。

所以我试过了

dfclean = [x for x in df if x]

导致

'NoneType' 对象不可迭代 TypeError

我也试过

dfclean = [df for df in dfclean if not df.empty]

导致

名称“dfclean”未定义 NameError

我也试过

dfclean = list(filter(lambda df: not df.empty, df))

结果相同

'NoneType' 对象不可迭代 TypeError

在所有这些情况下,输出都会成功显示 df 结果(第一行以 EmptyDataFrame 开头的列表)。有什么建议可以消除这个 Empty DataFrame,这可能是上述 NoneType 错误的罪魁祸首?

【问题讨论】:

  • 这里 dfclean = [dfclean for df in dfclean if not df.empty] 我假设你想要 [df for df in dfclean if not df.empty],一个错字
  • 是的,这里有错字(已更正),但原版的脚本是正确的。谢谢你的来信。

标签: python dataframe nonetype


【解决方案1】:

您的列表理解它的错误,这就是它抛出错误的原因。

首先你初始化一个值,然后你调用它来循环并验证它是否有条件。

dfclean = [*df* for df in dfclean if not df.empty]

更多关于这个话题here

和 de docs froms pandas 阐明如何使用 DataFrame.empty here

希望对你有所帮助。

【讨论】:

    【解决方案2】:

    感谢您的反馈。原来问题出在我的串联循环的更上游。 This response 解决了我的问题。我的 df 有一个 dfclean 没有解决的空 DataFrame。解决此问题后,我的导出成功。再次感谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-07
      • 2017-11-02
      • 1970-01-01
      • 2018-11-26
      • 2020-02-10
      • 2022-09-29
      • 1970-01-01
      • 2019-12-22
      相关资源
      最近更新 更多