使用regex从以特定字符开头的列中删除子字符串

2024-09-27 23:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由名字和身份证号码组成的专栏,比如

Name 1
Name 2
Name 3 
CAP 1 TRE001 
CAP 2 TRE002 
PB 1  EHS001 
...

身份证号码总是以TRE或EHS开头。我想把这些从列中删除,这样列就可以

Name 1
Name 2
Name 3 
CAP 1
CAP 2
PB 2
...

我知道我可以用结构更换并替换为“”。(可能使用str.strip公司也是吗?)。但我好像不太懂正则表达式

编辑:我应该更详细一点-有时名字可能是这样的

Name 1 Low
Name 2 Low 
Name 3 
Name 4
CAP 1 TRE001
etc 

所以如果我用结构拆分我有时会删掉一部分我不想要的名字


Tags: name名字结构号码lowcaptre身份证
3条回答

具有特定正则表达式模式:

In [17]: df.col.str.replace(r'\s*\b(TRE|EHS).*$', '')
Out[17]: 
0    Name 1
1    Name 2
2    Name 3
3     CAP 1
4     CAP 2
5      PB 1
Name: col, dtype: object

尝试在split上使用简单的'or'regex模式。 接下来,只选取返回的第一个元素,它应该如下所示:

series.str.split('TRE|EHS').str[0]

我们使用结构拆分你知道吗

df['col']=df.col.str.split(' ',n=2).str[:2].str.join(sep=' ')

或者我们用str.rsplit

df.col.str.rsplit(' ',n=1).str[0]

相关问题 更多 >

    热门问题