【问题标题】:Delete empty dataframe with loop in Python在Python中使用循环删除空数据框
【发布时间】:2020-03-13 16:38:20
【问题描述】:

我在 Python 中有一系列不同的 DataFrame。我想检查它们中的每一个是否为空,然后删除那些实际上是空的。我正在尝试一个循环,但实际上没有删除任何数据帧,还有那些实际上是空的。这里是示例,其中 df_Adf_Bdf_Cdf_D 是我的数据框,最后一个 (df_D) 是空的。

df_names = [df_A, df_B, df_C, df_D]
for df_ in df_names:
    if df_.empty: del df_

当然我错过了一些非常简单的东西,我希望你能帮助我解决这个(可能有点傻)的问题。

【问题讨论】:

  • 您想从列表中删除数据框还是想删除数据框本身?
  • 数据框本身
  • 请添加纯 python 标签。 del 在这里帮不了你。
  • 你有系列或列表吗?

标签: python-3.x pandas loops dataframe


【解决方案1】:

您可以使用 python locals() 函数来执行此操作。我会首先将数据框保存为string

代码

df_names = ['df_A', 'df_B', 'df_C', 'df_D']
for df_ in df_names:
    if locals()[df_].empty:
        del locals()[df_]

您还可以使用以下代码检查您的数据框是否已被删除:

alldfs = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)]
for i in alldfs:
    if i[:1] != '_':
        print (i)

上面的sn-p会返回所有已有的dataframe(不包括python内部定义的)

【讨论】:

  • 非常感谢@Gary 的热情回复。效果很好!
猜你喜欢
  • 2017-10-28
  • 2015-05-08
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2013-06-26
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多