Pandas如何用正则简化DataFrame多值字符串替换并支持扩展匹配
简化实现方案
方案1:正则批量替换(适配模糊匹配需求,支持自动识别新的velvet类食品)
你可以提前定义正则匹配规则和替换结果的映射字典,一次调用完成所有替换操作,还能适配大小写、内容空格差异,以及你需要的blue velvet自动替换为dessert的需求:
# 替换规则映射:键为正则匹配模式,值为替换后的内容 replace_patterns = { r'(?i)apple': 'fruit', # (?i)忽略大小写,匹配Apple、apple等所有写法 r'(?i)beet\s*root': 'vegetable', # \s*兼容中间有无空格,适配Beet root、Beetroot r'(?i)pizza': 'fast food', r'(?i).*velvet$': 'dessert' # 匹配所有以velvet结尾的内容,Red velvet、blue velvet都生效 } # 单句完成所有替换 df['food_item'] = df['food_item'].replace(replace_patterns, regex=True)
后续需要新增替换规则时,只需要在replace_patterns字典中新增对应键值对即可,不用额外加替换代码。
方案2:精确匹配简化写法
如果所有待替换内容都是固定值,不需要模糊匹配,直接用精确映射字典即可,性能更高:
replace_map = { 'Apple': 'fruit', 'Beet root': 'vegetable', 'Pizza': 'fast food', 'Red velvet': 'dessert', 'blue velvet': 'dessert' } df['food_item'] = df['food_item'].replace(replace_map)
内容的提问来源于stack exchange,提问作者aristotle29
相关产品推荐
相关产品推荐

