使用re.search在字典存储的DataFrame中检索值报错如何解决
问题修复方案
错误原因
- 调用
re.search('035', text)时传入的第二个参数text是完整DataFrame对象,不是字符串类型,不符合re.search的入参类型要求,因此抛出类型错误。 - 原遍历逻辑未准确定位到目标判断单元:需先取每个DataFrame的A列第1行的值,再进行子串匹配判断。
修复后实现代码
import re import pandas as pd something = [] # 遍历存储所有DataFrame的字典 for df_key, current_df in df.items(): # 取A列第1行值,pandas默认索引从0开始,若第1行指次行可改为iloc[1] a_first_val = str(current_df['A'].iloc[0]) # 判断是否包含目标子串 if re.search(r'035', a_first_val): # 提取B列内容,重命名为数据集key方便合并后区分来源 something.append(current_df['B'].rename(df_key)) # 合并结果,增加空值判断避免无匹配时报错 result = pd.concat(something, axis=1) if something else pd.DataFrame()
可选优化
如果仅需要判断简单子串是否存在,不需要复杂正则规则,可直接用if '035' in a_first_val:替代re.search逻辑,性能更高且写法更简洁。
内容的提问来源于stack exchange,提问作者Dino
相关产品推荐
相关产品推荐

