Python Pandas如何拆分无空格分隔的数字与文本混合字符串
Pandas拆分数字文本拼接列实现方法
核心采用正则匹配+str.extract批量处理,适配所有「数字在前、非数字文本在后无分隔拼接」的行,处理数千行数据效率无压力。
实现代码
假设待拆分的列名为mixed_col,拆分后的两列分别命名为num_part(数字部分)和text_part(文本部分):
import pandas as pd # 核心拆分逻辑 df[['num_part', 'text_part']] = df['mixed_col'].str.extract(r'(\d+\.?\d*)(\D+)') # 可选:将数字部分转换为数值类型(默认拆分后为字符串格式) df['num_part'] = pd.to_numeric(df['num_part'])
规则说明
- 正则
r'(\d+\.?\d*)(\D+)'的匹配逻辑:- 第一组
(\d+\.?\d*):匹配整数、带小数点的浮点数格式的数字部分 - 第二组
(\D+):匹配所有非数字的文本部分
- 第一组
- 若需要提前排查不符合拼接规则的异常行,可执行以下代码筛选:
# 输出所有不符合「数字在前+文本在后」拼接规则的行 abnormal_rows = df[~df['mixed_col'].str.match(r'^\d+\.?\d*\D+$')]
测试效果
输入测试数据:
| mixed_col |
|---|
| 0.3314QSF |
| 123ABC |
| 45.67DEF |
| 89GHI |
拆分后输出:
| mixed_col | num_part | text_part |
|---|---|---|
| 0.3314QSF | 0.3314 | QSF |
| 123ABC | 123 | ABC |
| 45.67DEF | 45.67 | DEF |
| 89GHI | 89 | GHI |
内容的提问来源于stack exchange,提问作者Baobab
相关产品推荐
相关产品推荐

