我有一系列地址,想要一个只有街道名称的系列。唯一的问题是,有些地址没有门牌号,有些则有。
所以如果我有一个看起来像的系列:
Idx
0 11000 SOUTH PARK
1 20314 BRAKER LANE
2 203 3RD ST
3 BIRMINGHAM PARK
4 E 12TH
我会写什么函数来获取
Idx
0 SOUTH PARK
1 BRAKER LANE
2 3RD ST
3 BIRMINGHAM PARK
4 E 12TH
其中任何单词'完全由字符串开头的数字字符组成的字母已被删除?正如您在上面所看到的,我希望保留3 3RD STREET'以。。开始。我正在思考一个正则表达式,但这超出了我的范围。谢谢!
答案 0 :(得分:7)
您可以使用str.replace
与正则表达式 ^ \ d + \ s + 删除前导数字:
s.str.replace('^\d+\s+', '')
Out[491]:
0 SOUTH PARK
1 BRAKER LANE
2 3RD ST
3 BIRMINGHAM PARK
4 E 12TH
Name: Idx, dtype: object
答案 1 :(得分:1)
str.replace('\d+\s', '')
就是我提出来的:
df = pd.DataFrame({'IDx': ['11000 SOUTH PARK',
'20314 BRAKER LANE',
'203 3RD ST',
'BIRMINGHAM PARK',
'E 12TH']})
df
Out[126]:
IDx
0 11000 SOUTH PARK
1 20314 BRAKER LANE
2 203 3RD ST
3 BIRMINGHAM PARK
4 E 12TH
df.IDx = df.IDx.str.replace('\d+\s', '')
df
Out[128]:
IDx
0 SOUTH PARK
1 BRAKER LANE
2 3RD ST
3 BIRMINGHAM PARK
4 E 12TH