我在Python中有一系列不同的DataFrame。我想检查它们是否为空,然后删除实际上为空的那些。我正在尝试使用循环,但实际上没有删除任何数据帧,也实际上没有删除任何数据帧。在此示例中,其中df_A,df_B,df_C和df_D是我的数据帧,最后一个(df_D)是empy。
df_names = [df_A, df_B, df_C, df_D]
for df_ in df_names:
if df_.empty: del df_
确保我缺少一些非常简单的东西,希望您能帮助我解决这个(可能有点愚蠢)问题。
您可以使用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)
上面的代码片段将返回所有现有的数据帧(不包括由python内部定义的数据帧)