首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将大写字符与数字与小写字符与数字分开

将大写字符与数字与小写字符与数字分开
EN

Stack Overflow用户
提问于 2018-08-08 12:43:18
回答 4查看 38关注 0票数 0

我有一个列名称,其数据格式如下:

代码语言:javascript
运行
复制
  Name              Name2
0 MORR1223ldkeha12  ldkeha12
1 FRAN2771yetg4fq1  yetg4fq1
2 MORR56333gft4tsd1 gft4tsd1

我想将名称按列Name2分开。这里有一个4个大写字符的模式,后面跟着4-5位数,我对下面这些4-5位数感兴趣。

有办法做到这一点吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-08 13:08:10

使用str.extract

代码语言:javascript
运行
复制
import pandas as pd

df = pd.DataFrame({"Name": ['MORR1223ldkeha12', 'FRAN2771yetg4fq1', 'MORR56333gft4tsd1']})
df["Name2"] = df["Name"].str.extract(r"\d{4,5}(.*)")
print(df)

输出:

代码语言:javascript
运行
复制
                Name     Name2
0   MORR1223ldkeha12  ldkeha12
1   FRAN2771yetg4fq1  yetg4fq1
2  MORR56333gft4tsd1  gft4tsd1
票数 1
EN

Stack Overflow用户

发布于 2018-08-08 12:55:50

您可以尝试以下逻辑:

代码语言:javascript
运行
复制
import re
_names = ['MORR1223ldkeha12', 'FRAN2771yetg4fq1', 'MORR56333gft4tsd1']
result = []
for _name in _names:
    m = re.search('^[A-Z]{4}[0-9]{4,5}(.+)', _name)
    result.append(m.group(1))
print(result)
票数 2
EN

Stack Overflow用户

发布于 2018-08-08 12:52:09

您可以使用正则表达式来确定是否有4位或5位数字,然后删除前8个或9个字母。因此,如果模式^[A-Z]{4}[0-9]{5}.*匹配,则有5位数字,其他4位数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51747078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档