我有一个列名称,其数据格式如下:
Name Name2
0 MORR1223ldkeha12 ldkeha12
1 FRAN2771yetg4fq1 yetg4fq1
2 MORR56333gft4tsd1 gft4tsd1我想将名称按列Name2分开。这里有一个4个大写字符的模式,后面跟着4-5位数,我对下面这些4-5位数感兴趣。
有办法做到这一点吗?
发布于 2018-08-08 13:08:10
使用str.extract
import pandas as pd
df = pd.DataFrame({"Name": ['MORR1223ldkeha12', 'FRAN2771yetg4fq1', 'MORR56333gft4tsd1']})
df["Name2"] = df["Name"].str.extract(r"\d{4,5}(.*)")
print(df)输出:
Name Name2
0 MORR1223ldkeha12 ldkeha12
1 FRAN2771yetg4fq1 yetg4fq1
2 MORR56333gft4tsd1 gft4tsd1发布于 2018-08-08 12:55:50
您可以尝试以下逻辑:
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)发布于 2018-08-08 12:52:09
您可以使用正则表达式来确定是否有4位或5位数字,然后删除前8个或9个字母。因此,如果模式^[A-Z]{4}[0-9]{5}.*匹配,则有5位数字,其他4位数。
https://stackoverflow.com/questions/51747078
复制相似问题