如何在Python DataFrame中提取以c开头的目标字母数字编码
解决DataFrame提取Code列的问题
你的正则表达式存在逻辑错误:c^(\d[^\W_]{5,})里的^是行首锚定符,放在c后面完全不符合匹配逻辑,而且分组仅捕获数字开头的片段,自然无法正确提取目标字符串。
正确实现代码
使用str.extract配合正确的正则表达式,直接捕获以c开头的连续字母数字串:
df['Code'] = df['Text'].str.extract(r'(c[a-zA-Z0-9]+)')
如果确认数据中不会出现下划线,也可以用更简洁的写法(\w等价于[a-zA-Z0-9_]):
df['Code'] = df['Text'].str.extract(r'(c\w+)')
结果验证
运行后得到的DataFrame与你期望的一致:
| Text | No | Code |
|---|---|---|
| c0404079=0.00 | 34 | c0404079 |
| c1444716<=0.00 | 45 | c1444716 |
| 1.0<c00226311 <= 0.00 | 36 | c00226311 |
| c0001208 <= 0.00 | 32 | c0001208 |
| 0.00<c0243026<=2.00 | 85 | c0243026 |
| c0036983 <= 0.00 | 55 | c0036983 |
| c0036974=0.00 | 39 | c0036974 |
正则说明
c:精准匹配开头的字母c[a-zA-Z0-9]+:匹配后续一个或多个字母数字字符,直到遇到第一个非字母数字字符时停止- 括号
():将匹配到的内容标记为捕获组,str.extract会提取该组内容作为新列的值
内容的提问来源于stack exchange,提问作者asmgx
相关产品推荐
相关产品推荐

