如何简化pandas数据清洗:优化count列每行最小数值提取方案
pandas Count列清洗优化方案
核心思路是通过自定义处理函数一次性完成所有规则匹配,替代重复多次的字符串替换操作,同时兼容你要求的「取最小值」和「and格式数值相加」两个需求,适配所有样例输入场景。
完整实现代码
import pandas as pd import re def process_count(content): # 第一步:清除所有方括号、圆括号及内部的冗余内容 cleaned = re.sub(r'[\[\(].*?[\]\)]', '', str(content)) # 提取字符串中所有的数字转为整数列表 num_list = list(map(int, re.findall(r'\d+', cleaned))) # 空值容错处理,可根据需要调整默认返回值 if not num_list: return None # 匹配到and字段时返回数值和 if 'and' in cleaned.lower(): return sum(num_list) # 其余场景统一返回最小数值 return min(num_list) # 调用函数处理目标列 df['Count'] = df['Count'].apply(process_count)
样例输入处理结果
针对你给出的输入样例,处理后输出如下:
| 原输入 | 处理后输出 |
|---|---|
| ~186-205 | 186 |
| 4 and 4 | 8 |
| 200 | 200 |
| 800-1000 | 800 |
| 550-550[2] | 550 |
| 10, 20 or 50 | 10 |
| 5 (four score and bla bla) | 5 |
| 38 or 30 | 30 |
| 88-80 | 80 |
方案优势
- 逻辑统一,不需要单独适配各种格式的破折号、分隔符,自动提取所有有效数字
- 代码量缩减近70%,后续调整规则只需要修改自定义函数即可,维护成本低
- 自动忽略括号内的and字段,避免误触发求和逻辑,符合实际业务需求
内容的提问来源于stack exchange,提问作者Scapegoat
相关产品推荐
相关产品推荐

