与Pandas分开的街道和号码

2024-09-29 23:18:40 发布

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

我知道这个问题经常出现。但我发现的潜在解决方案不是用PHP就是用Java,我不知道。我需要这个来处理Python。你知道吗

我有这样的街道:

df = pd.DataFrame({'street':[
    'ABC Street',
    'ABC Street 1',
    'SDF Street 1a',
    'KSD Street 30 a',
    'URR-AC Place 1-5'
]})

哦,太奇怪了,我需要把它们分开,所以我最终得到:

   street       number
0  ABC Street   NaN
1  ABC Street   1
2  SDF Street   1a 
3  KSD Street   30 a
4  URR-AC Place 1-5

我的想法并不新鲜。从字符串的末尾看,直到找到最后一个数字,然后在那里拆分字符串。但与结构拆分我可以分开,但4不起作用。我想这是正则表达式的问题,但我对此一无所知。你知道吗


Tags: 字符串streetdfplacejava解决方案街道ac
1条回答
网友
1楼 · 发布于 2024-09-29 23:18:40

好吧,对于我的特殊情况,我似乎找到了答案。你知道吗

首先,我要确保没有前导/跟踪空格:

df.street= df.street.str.strip()

然后,我提取街道名称。正则表达式所做的是查找一个或多个非数字字符。所以一旦它碰到第一个数字,它就停止了,因此给了我一个名字:

df['street_name'] = df.street.str.extract('(\D+)', expand=False)

为了区分号码,我使用了相同的功能。但在这里,我要寻找的第一个数字出现和任何后续字符。你知道吗

df['number'] = df.street.str.extract('(\d+.*)', expand=False)

这将导致以下数据帧:

  street             street_name    number
0 ABC Street         ABC Street     NaN 
1 ABC Street 1       ABC Street     1 
2 SDF Street 1a      SDF Street     1a 
3 KSD Street 30 a    KSD Street     30 a 
4 URR-AC Place 1-5   URR-AC Place   1-5

注意:当你有一个像“Strasse-des-17”这样的街道名称时,这将失败。Juli,5“,其中一个数字是名字的一部分。你知道吗

相关问题 更多 >

    热门问题