Python使用字典匹配DataFrame字符串列提取键仅返回单值问题问询
问题根因
你的原函数存在两个逻辑错误导致只返回首个匹配:
return_x初始化的位置错误,放在了key遍历循环内部,每次切换key时会清空之前已匹配的结果return语句写在了值匹配的判断分支内,只要匹配到第一个值就会直接终止整个函数,不会继续遍历剩余的匹配项
另外你给出的期望输出第三行的diving属于笔误,按照你提供的sport_dic规则,div匹配diving应该返回对应的keyindividual,修正后的期望输出第三行chat_type应为['team','team','individual']
修正后的代码
def type_search(string, dic): return_x = [] # 把return_x初始化移到所有循环外面,避免每次清空 for key, value in dic.items(): for v in value: if v in string: return_x.append(key) # 所有遍历完成后再返回结果 return return_x df['chat_type'] = df['chat'].apply(lambda x: type_search(x, sport_dic))
运行后得到的结果
chat_type 0 [team, individual] 1 [individual, individual] 2 [team, team, individual]
内容的提问来源于stack exchange,提问作者Laz
相关产品推荐
相关产品推荐

