如何用Pandas的str.replace提取字符串下划线前的数字部分
解决方案
直接使用以下代码即可实现需求:
df['col_name'] = df['col_name'].str.replace(r'^CC(\d{4})_.*$', r'\1', regex=True)
代码说明
- 正则表达式解析:
^CC:匹配字符串开头的固定前缀"CC"(\d{4}):捕获CC后面的4位数字(也就是你需要保留的3309),括号定义了第一个捕获组_.*$:匹配下划线开始到字符串结尾的所有剩余内容,确保整个字符串都被匹配替换
- 替换值
r'\1':引用第一个捕获组捕获到的内容,也就是我们要保留的数字部分 - 赋值回原列:必须将修改后的结果重新赋值给
df['col_name'],否则只会返回临时结果,不会改变DataFrame中的数据
灵活适配方案
如果CC后面的数字位数不固定(比如可能是2位、3位或更多),可以把正则改成:
df['col_name'] = df['col_name'].str.replace(r'^CC(\d+)_.*$', r'\1', regex=True)
\d+表示匹配1个或多个数字,能适配不同长度的数字前缀。
内容的提问来源于stack exchange,提问作者Abhi Sharma
相关产品推荐
相关产品推荐

