首页 > 解决方案 > 根据 DataFrame 从 DataFrames 列表中删除 DataFrame - python?

问题描述

我有一个 DataFrames 列表,我想从满足以下任何条件的列表中删除 DataFrames:

我为列长度尝试的代码如下所示,列表名为 df_list:

for i in df_list:
   if len(i.columns) == 1:
      del[i]

或者

df_list = [i for i in df_list if not (i.shape[1] == 2)]

我试图删除在任何地方包含字符串“A3”的数据帧的代码是:

df_list = [i for i in df_list if not ('A3' in i.columns)]

我知道我的号码是错误的,但他们都没有从我的列表中删除任何内容,有没有人知道正确执行此操作的方法?

标签: pythondataframe

解决方案


这是你要找的吗?

import pandas as pd

url = 'https://www.bls.gov/web/empsit/cesbmart.htm'
df_list = pd.read_html(url)


key_word = 'CES'

delete_by_idx = []
for idx, dataframe in enumerate(df_list):
    A3_found = False

    # Check if A3 is in any row
    for i, row in dataframe.iterrows():
        if row.str.contains(key_word).any():
           A3_found = True

    # If A3 was found, delete the dataframe
    if A3_found == True:
        delete_by_idx.append(idx)  
        continue

    # If A3 is in the columns, delete the dataframe
    cols =  [ str(col_name) for col_name in list(dataframe.columns) ]
    if any(key_word in x for x in cols):
        delete_by_idx.append(idx) 
        continue

    # If columns less than or equal to 2, delete the dataframe
    if len(dataframe.columns) <= 2:
        delete_by_idx.append(idx) 
        continue

delete_by_idx.sort(reverse=True)
for each in delete_by_idx:        
    del df_list[each] 

推荐阅读