如何在Python中用列表推导式筛选含'blue'子串列的DataFrame名称
筛选包含含"blue"子串列的DataFrame名称
你的问题出在判断逻辑上:"blue" in df.columns是检查是否存在精确等于"blue"的列名,但你的列名都是"blue_max"、"blue_min"这类包含"blue"子串的变体,所以这个判断永远不成立,返回空列表。
要实现筛选至少包含一个名称含"blue"子串列的DataFrame,需要遍历每个DataFrame的列名,检查是否有任意一列包含该子串,用any()函数可以简洁实现这个逻辑:
df_list = [ df_name for df_name, df in df_dictionary.items() if any("blue" in col for col in df.columns) ] print(df_list)
代码说明:
- 遍历字典的键值对(
df_name是DataFrame的名称,df是对应的DataFrame对象) any("blue" in col for col in df.columns)会逐个验证每个列名,只要有一列包含"blue"子串,就返回True- 满足条件的DataFrame名称会被加入结果列表
如果想更直观地理解逻辑,也可以用分步循环的写法:
df_list = [] for df_name, df in df_dictionary.items(): has_blue_column = False # 遍历当前DataFrame的所有列名 for column in df.columns: if "blue" in column: has_blue_column = True break # 找到符合条件的列就停止遍历 if has_blue_column: df_list.append(df_name) print(df_list)
内容的提问来源于stack exchange,提问作者LostinSpatialAnalysis
相关产品推荐
相关产品推荐

