如何用Python Pandas将列中abc-单数字替换为abc-0X格式?
原始DataFrame
| 序号 | 数据列1 |
|---|---|
| 321 | abc-1 |
| 324 | abc-2 |
| 326 | abc-3 |
| 328 | abc-4 |
| 330 | abc-5 |
| 330 | abc-12 |
| 331 | xyz-1 |
解决方案
方法1:用df.replace()配合正则表达式
直接通过正则匹配目标格式,利用分组捕获实现两位数字的补全:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ '序号': [321, 324, 326, 328, 330, 330, 331], '数据列1': ['abc-1', 'abc-2', 'abc-3', 'abc-4', 'abc-5', 'abc-12', 'xyz-1'] }) # 替换仅单个数字的abc开头内容 df['数据列1'] = df['数据列1'].replace(r'^abc-(\d)$', r'abc-0\1', regex=True)
- 正则
^abc-(\d)$:精准匹配以abc-开头、后跟单个数字的完整字符串,括号捕获这个数字作为分组 - 替换规则
abc-0\1:将捕获到的单个数字补0,比如abc-1变成abc-01
方法2:用str.replace()(更直观)
针对字符串列直接调用str.replace(),逻辑和上面完全一致:
df['数据列1'] = df['数据列1'].str.replace(r'^abc-(\d)$', r'abc-0\1', regex=True)
处理后结果
| 序号 | 数据列1 |
|---|---|
| 321 | abc-01 |
| 324 | abc-02 |
| 326 | abc-03 |
| 328 | abc-04 |
| 330 | abc-05 |
| 330 | abc-12 |
| 331 | xyz-1 |
内容的提问来源于stack exchange,提问作者Kavya shree
相关产品推荐
相关产品推荐

