如何在pandas中使用字典和正则将Series字符串列的IPL球队名转换为缩写
解决方案
你可以通过正则提取Result列中的球队全称,再映射为对应缩写实现需求,具体实现代码如下:
import re # 按球队全称长度降序排序,避免短队名先匹配引发的错误 sorted_team_names = sorted(temp.keys(), key=lambda x: len(x), reverse=True) # 构造正则匹配模式 match_pattern = r'(' + '|'.join(sorted_team_names) + r')' # 1. 忽略大小写提取Result中的球队全称 # 2. 转为全大写匹配temp字典的键 # 3. 映射为对应缩写 df['Result'] = df['Result'].str.extract(match_pattern, flags=re.IGNORECASE)[0].str.upper().map(temp)
注意事项
- 如果你的Result列存在比赛取消、无结果等异常值,提取后会得到NaN,可根据业务需要自行填充,比如填充为
'No Result'的代码为:df['Result'] = df['Result'].fillna('No Result') - 如果你希望保留Result列原有内容,仅替换球队全称为缩写,可以用以下代码实现:
import re # 构造不区分大小写的替换映射 replace_map = {re.compile(k, re.IGNORECASE): v for k, v in temp.items()} df['Result'] = df['Result'].replace(replace_map, regex=True)
内容的提问来源于stack exchange,提问作者Ankit Kalauni
相关产品推荐
相关产品推荐

