2017-08-04 36 views
-2

我知道這個問題一直出現。但我發現的潛在解決方案不是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 

我的想法並不新鮮。從字符串末尾查找,直到找到最後一個數字並在那裏分割字符串。但是str.split可以分割,但是#4將不起作用。我想這是一個正則表達式問題,但我不知道它。

+0

我真的不明白,爲什麼我對此低估了。這個問題應該很清楚,我舉了一個例子。所以,拜託,如果你冷靜下來,至少告訴我爲什麼,所以下次我可以做得更好。謝謝。 – SLglider

回答

0

好吧,對於我的特殊情況,我似乎找到了答案。

首先,我要確保沒有領先/跟蹤空格:

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

然後,我提取街道名稱。正則表達式的作用是查找一個或多個非數字字符。所以一旦它擊中它停止的第一位,從而讓我的名字:

要分開的數量,我使用的是相同的功能。但在這裏,我正在尋找第一個出現的數字和任何後續字符。

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 

注意:當你有一個街道名稱,如「大街-DES-17巨力,5」,其中一些是這將失敗名字的一部分。