如何在DataFrame字典中找到含带'blue'子串列的DataFrame名称
解决方法
先纠正你原代码里的两个关键问题:
- 遍历
df_dict时,你定义的df其实是字典的键(也就是DataFrame的名称),并不是实际的DataFrame对象,所以没法调用.columns属性; - 即使拿到了DataFrame的列名,
.columns.contains()的用法有误,应该用df.columns.str.contains('blue').any()来判断是否存在至少一列包含目标子串。
下面给你几种实用的实现方式:
方式1:修正后的循环写法
适合需要在遍历过程中执行额外操作的场景:
matching_names = [] # 遍历字典的键值对,name是DataFrame名称,df是对应的数据框 for name, df in df_dict.items(): # 检查是否有列名包含'blue',加case=False可忽略大小写,按需添加 if df.columns.str.contains('blue').any(): matching_names.append(name)
方式2:列表推导式(更简洁)
如果只是单纯筛选符合条件的名称,用列表推导式一行就能完成,无需显式写循环:
matching_names = [name for name, df in df_dict.items() if df.columns.str.contains('blue').any()]
方式3:获取第一个符合条件的名称
如果只需要找到第一个满足要求的DataFrame名称,可以用next():
first_match = next((name for name, df in df_dict.items() if df.columns.str.contains('blue').any()), None) # 没有符合条件的DataFrame时,会返回None
内容的提问来源于stack exchange,提问作者LostinSpatialAnalysis
相关产品推荐
相关产品推荐

