根据DataFrame-python从DataFrame列表中删除DataFrame?
我有一个数据帧列表,我想从列表中删除满足以下任何条件的数据帧:根据DataFrame-python从DataFrame列表中删除DataFrame?,python,dataframe,Python,Dataframe,我有一个数据帧列表,我想从列表中删除满足以下任何条件的数据帧: 如果数据帧具有2列或更少的列 如果数据帧在任何位置包含字符串“A3” 我尝试的列长度代码如下所示。列表名为df_list: for i in df_list: if len(i.columns) == 1: del[i] 或 我尝试删除包含字符串“A3”的数据帧的代码如下: df_list = [i for i in df_list if not ('A3' in i.columns)] 我知道我的号码是错
- 如果数据帧具有2列或更少的列
- 如果数据帧在任何位置包含字符串“A3”
for i in df_list:
if len(i.columns) == 1:
del[i]
或
我尝试删除包含字符串“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]
将熊猫作为pd导入
url='1〕https://www.bls.gov/web/empsit/cesbmart.htm'
df_list=pd.read_html(url)
关键词='CES'
通过_idx=[]删除_
对于idx,枚举中的数据帧(df_列表):
A3_found=False
#检查A3是否在任何一行中
对于i,dataframe.iterrows()中的行:
如果row.str.contains(关键字).any():
A3_find=真
#如果找到A3,则删除数据帧
如果发现A3_==真:
通过\u idx.append(idx)删除\u
持续
#如果列中有A3,请删除数据帧
cols=[str(col\u name)表示列表(dataframe.columns)中的col\u name]
如果有(x中的关键字表示cols中的x):
通过\u idx.append(idx)删除\u
持续
#如果列小于或等于2,则删除数据帧
如果len(dataframe.columns)这将检查列名中是否有“A3”。然后可以使用相同的格式检查列的值
for each in df_list:
if 'A3' in each.loc[0]:
df_list.remove(each)
当你说“包含”时,你的意思是在列中还是在数据中?绝对是在数据框中的任何地方。我刚刚运行了它,它也没有从我的列表中删除任何内容??我的大多数数据帧都包含字符串这可能是问题所在吗?再试一次,我发现typo@Rose,对不起。我刚刚意识到,除非按降序,否则按索引删除是行不通的。我让它上升。这现在应该可以工作了,我刚刚运行了您建议的新代码,但是行“如果有('A3'在x中代表x在列表中(dataframe.columns)):“我收到了错误”类型为“int”的参数不适合”?@Rose我做了调整。如果仍然抛出错误,是否可以共享数据帧的短列表?或者至少有一个数据框被卡住了?如果我有你用来测试它的数据的话,那就更容易测试了。
for each in df_list:
if 'A3' in each.loc[0]:
df_list.remove(each)