从列中删除字符串和数字的组合

2024-06-26 10:37:16 发布

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

下面是pandasdataframe的子集,列如下

   No                   Name
0    1   SOU 01 Sungai Dingin
1    2                  PKS 2
2    3                 Mill 3
3    4    Tanah Kerajaan Mill
4    5                MAS POM
5    6           SOU 20 Chaah
6    7     SOU 03 Elphil Mill
7    8       SOU 08 East Mill
8    9  SOU 04 Flemington POM
9   10    SOU 30A Jeleta Bumi
10  11         SOU 30B Mostyn
11  12          KLK - Mill 02
12  13           Chini 02 POM
13  14      SOU 05 Selaba POM
14  15     SOU 9A Sepang Mill

我试图找出在python中使用regex的最佳方法,以便在不影响列中其他文本的情况下轻松地删除该列中字符串和数字的'SOU XX''SOU XXX'组合?你知道吗

输出如下:

    No                 Name
0    1        Sungai Dingin
1    2                PKS 2
2    3               Mill 3
3    4  Tanah Kerajaan Mill
4    5              MAS POM
5    6                Chaah
6    7          Elphil Mill
7    8            East Mill
8    9       Flemington POM
9   10          Jeleta Bumi
10  11               Mostyn
11  12        KLK - Mill 02
12  13         Chini 02 POM
13  14           Selaba POM
14  15          Sepang Mill

Tags: nonamemillmaseastpompkssou
1条回答
网友
1楼 · 发布于 2024-06-26 10:37:16

您可以将regex ^SOU \S{2,3}(注意末尾的空格)与^{}一起使用:

df['Name'] = df['Name'].str.replace(r'^SOU \S{2,3} ', '')

结果:

    No                 Name
0    1        Sungai Dingin
1    2                PKS 2
2    3               Mill 3
3    4  Tanah Kerajaan Mill
4    5              MAS POM
5    6                Chaah
6    7          Elphil Mill
7    8            East Mill
8    9       Flemington POM
9   10          Jeleta Bumi
10  11               Mostyn
11  12        KLK - Mill 02
12  13         Chini 02 POM
13  14           Selaba POM
14  15          Sepang Mill

正则表达式^SOU \S{2,3}匹配字母“SOU”加上任意两个或三个非空格字符\S,但前提是它们出现在字符串的开头,这要归功于^锚定。你知道吗

相关问题 更多 >