如何从dataframe的字符串列中提取数字,过滤非数字内容得到纯数值列
DataFrame指定列数据清洗(提取纯数字内容)
需求规则如下:
- 对DataFrame指定列做清洗,若单元格内容包含字母、符号等非数字字符,仅提取其中的连续数字部分
- 若单元格本身为纯数字内容则无需处理
- 最终得到仅含数值的目标列
效果示例
处理前数据表
| ID | Price | Item Code |
|---|---|---|
| 1 | 3.60 | a/b 80986 |
| 2 | 4.30 | 45772 |
| 3 | 0.60 | fF/6 9778 |
| 4 | 9.78 | 48989 |
| 5 | 3.44 | \ 545 |
| 6 | 3.44 | r. 509 |
处理后预期结果
| ID | Price | Item Code |
|---|---|---|
| 1 | 3.60 | 80986 |
| 2 | 4.30 | 45772 |
| 3 | 0.60 | 9778 |
| 4 | 9.78 | 48989 |
| 5 | 3.44 | 545 |
| 6 | 3.44 | 509 |
实现代码(Python Pandas环境)
import pandas as pd import re # 定义提取连续数字的函数 def extract_continuous_digits(text): # 匹配文本中所有连续数字片段,默认取最长的片段适配示例需求,多数字段场景可自行调整取值逻辑 digit_segments = re.findall(r'\d+', str(text)) return max(digit_segments, key=len) if digit_segments else None # 替换为实际需要处理的目标列名,示例中目标列为Item Code df['Item Code'] = df['Item Code'].apply(extract_continuous_digits) # 可选步骤:将清洗后的内容转换为数值类型,方便后续计算 df['Item Code'] = pd.to_numeric(df['Item Code'], errors='coerce')
内容的提问来源于stack exchange,提问作者Bobby Plourde
相关产品推荐
相关产品推荐

