我得到了以下df
| 門牌號碼 | housenumber_extra |
|---|---|
| 1 | |
| 2 | 一種 |
| 55a | 一種 |
| 55-4 | -4 |
| 3455℃ |
我怎樣才能得到以下df
| 門牌號碼 | housenumber_extra |
|---|---|
| 1 | |
| 2 | 一種 |
| 55 | 一種 |
| 55 | -4 |
| 3455 | C |
我使用替換功能從中過濾了字母值。然后使用更新功能,但它不起作用。有人知道更好的方法嗎
housenumber = df['huisnummer'].str.replace('[^a-zA-Z.,-/]', '')
df.set_index('serial', inplace=True)
df.update(huisnummer)
df.reset_index(inplace=True) # to recover the initial structure
uj5u.com熱心網友回復:
使用.str.extract:
df['housenumber_extra'] = df['housenumber'].str.extract(r'\d ([^\d]. )$')[0].str.strip().fillna(df['housenumber_extra']).str.upper()
輸出:
>>> df
housenumber housenumber_extra
0 1 NaN
1 2 A
2 55a A
3 55-4 -4
4 3455 C C
uj5u.com熱心網友回復:
看來您實際上并沒有使用第二列,而是可以直接從第一列中提取所有資訊:
df[['housenumber', 'housenumber_extra']] = (df['housenumber']
.str.extract('(\d )\W*(\w*)')
.replace({1: str.upper})
)
輸出:
housenumber housenumber_extra
0 1
1 2
2 55 a
3 55 4
4 3455 C
甚至不使用命名捕獲組進行分配:
(df['housenumber']
.str.extract('(?P<housenumber>\d )\W*(?P<housenumber_extra>\w*)')
.replace({'housenumber_extra': str.upper})
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443059.html
