2017-05-30 86 views
-2

我在我的數據框中有一列地址。我想從字符串中刪除房屋號碼,並只使用街道名稱來製作樹圖或wordcloud。 但是,有些地址的某些時候有3位數字,有時甚至比街道名稱更多。此外,一些街道名稱本身也有數字,所以我不能使用%d來刪除str.split或regex中的數字。我最近開始學習Python,所以我不知道如何分割這種字符串。任何幫助將不勝感激。如何只使用python從地址列中刪除房屋/建築物號碼

下面是在列中給出的地址的一個例子:
3150ñHONORE ST
139ë103 ST
412 E下部瓦克DR
300Ë第94 ST
10340小號AVENUEĴ
619小號KEDVALE AVE

回答

0

你可以使用一個正則表達式:^\d*\s

https://regex101.com/r/B7DbxW/1

+0

,如果我用它在一根繩子上的工作原理對象,但是如何使它在數據集或系列的列上工作? address = df [「Street Address」] regex2 = r「^ \ d * \ s」matches2 = re.finditer(regex2,address,re.MULTILINE)當我運行matches2 TypeError時出現以下錯誤:預期的字符串或緩衝區 – Che

+0

循環遍歷每一行並解析字符串 –

+0

我嘗試循環遍歷行並將字符串添加到列表中但它不起作用l = [] 索引,df.iterrows()中的行: matches2 = re .finditer(regex2,row [「Street Address」]) l.append(matches2)當我打印時l在每個實例中獲取而不是街道名稱字符串 – Che

0

假設所有房屋地址都沒有空間,您可以將字符串拆分第一個空格。用法示例:

s="3150 N Honore St" 
new_s=s.split(" ",1)[1] 

要打破下來 - s.split(" ",1)處分割第一空間的字符串,但只有1次。這將形成一個字符串列表,看起來像['3150','N Honore St']。既然你只想要後面的部分,[1]選擇它。