python-3.x - 在Python中使用循环删除空数据框
问题描述
我在 Python 中有一系列不同的 DataFrame。我想检查它们中的每一个是否为空,然后删除那些实际上是空的。我正在尝试使用一个循环,但实际上没有删除任何数据帧,还有那些实际上是空的。这里是示例,其中df_A、df_B、df_C和df_D是我的数据帧,最后一个(df_D)是空的。
df_names = [df_A, df_B, df_C, df_D]
for df_ in df_names:
if df_.empty: del df_
当然我错过了一些非常简单的东西,我希望你能帮助我解决这个(可能有点傻)的问题。
解决方案
您可以使用 pythonlocals()
函数来执行此操作。我首先将数据框保存在列表中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)
上面的代码片段将返回所有现有的数据帧(不包括python内部定义的数据帧)
推荐阅读
- excel - 将包含 hr:min:sec 和 min:sec 的 Excel 列转换为 hr:min:sec 格式
- c# - 尝试通过分段控制,Xamarin IOS 在容器视图中滑动 PVC 中的页面
- linux - 无法在 alpine docker 文件中运行 cron 消息
- nunjucks - Eleventy/njk - 基于动态标签的集合
- python - 转换 Pandas 日期时间以插入 MS SQL Server
- r - 在给定点的多边形内创建线
- python - Pyspark,PandasUDF;如何使用 Pyspark.PandasUDF 返回矩阵?
- java - 如何平滑隐藏动作模式工具栏然后显示动作栏
- c# - 使用 Azure Function 从 Azure BLOB 存储读取文件时请求超时
- python - VisibleDeprecationWarning:从不规则的嵌套序列创建一个 ndarray