以下是pandas
dataframe
的子集,其中包含如下所示的列
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中使用正则表达式的最佳方法,只是轻松删除该列中的'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
答案 0 :(得分:2)
您可以使用str.replace
使用正则表达式^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
,但只有当它们出现在字符串的开头时才会感谢^
锚