python - 根据 DataFrame 从 DataFrames 列表中删除 DataFrame - python?
问题描述
我有一个 DataFrames 列表,我想从满足以下任何条件的列表中删除 DataFrames:
- 如果 DataFrame 有 2 列或更少列。
- 如果 DataFrame 在任何地方都包含字符串“A3”。
我为列长度尝试的代码如下所示,列表名为 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)]
我知道我的号码是错误的,但他们都没有从我的列表中删除任何内容,有没有人知道正确执行此操作的方法?
解决方案
这是你要找的吗?
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]
推荐阅读
- javascript - Javascript:在未定义/空迭代器上捕获 for 循环的最佳方法?
- sql - 仅在条件下使用偏移量获取
- spring-boot - @ManyToMany 集合未填充 spring-boot-starter-data-jpa
- c# - 强制刷新方法后累积内存
- python - 如何使用 requests 和 pyqt5 获取 Web 数据?
- python - 如何在 zipapp 中加载 Hy 包?
- mysql - 在 MySQL 中使用主键作为自动增量
- progressive-web-apps - 如何控制 PWA 是使用缓存版本还是获取最新版本?
- ios - 回滚版本
- python - Pandas groupby并计算百分比变化