我正在處理的資料框包含一個地址行,我希望從中提取不同的變數(街道名稱、號碼、郵政編碼和國家/地區)。地址行按照以下模板填寫:“街道號碼、郵政編碼城市、國家”。
使用 .str.split(),我可以從字串中獲取單個元素。但是回傳多個元素不起作用。
所以,提取這個國家很容易。但是當我嘗試獲取街道和號碼時,我遇到了一些麻煩。街道可以包含一個或多個空格,但在最后一個空格之后總是有數字。所以我嘗試這樣做:
df["street_and_number"]=df["address"].str.split(",").str[0]
它創建了一個包含街道和數字的列。到目前為止,一切都很好。
如果我想上街,拆分空格并提取除最后一個元素之外的所有內容(對我而言)似乎是一個非常簡單的選擇:
df["street"]=df["street_and_number"].str.split().str[:-1]
但這會回傳一個串列,請參見下面的示例:
1541 [Burgemeester, Roelenweg]
Name: straat_en_nr, dtype: object
我想得到一個字串,而不是一個包含所有元素的串列。使用 expand 選項也不會產生所需的結果:
df["street"]=df["street_and_number"].str.split(expand=True)[:-1]
輸出:
0 1 2
我究竟做錯了什么?
uj5u.com熱心網友回復:
添加Series.str.join:
df["street"] = df["street_and_number"].str.split().str[:-1].str.join(' ')
uj5u.com熱心網友回復:
如果您想要將字串的開頭提取到第一個逗號,除了最后一個單詞,我相信一步正則運算式是合適的:
df['street'] = df['address'].str.extract(r'^([^,] )\s \S ,')
例子:
address street
0 street name number, postal code city, country street name
正則運算式演示
或者您可以匹配數字:
df['street'] = df['address'].str.extract(r'^([^,\d] )(?:\s \d )?,')
例子:
address street
0 street name 123, postal code city, country street name
1 street name only, postal code city, country street name only
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530336.html
標籤:熊猫细绳分裂返回提炼
上一篇:高山運算式錯誤:未定義顯示
下一篇:帶有連接節點的鏈接的聚集氣泡
