感謝您來到這裡。
我有一個這樣的字符串。7661(K)-TRIM(K)-R-蒙特利爾-QC(R)-R-PRUPERT-BC(K)-CNSHG(K)-R-PRUPERT-BC(K)-CAPRR(B)-CNSHG(K) )-TWJV'
我想通過在每個括號後添加逗號將其存儲在另一列(稱為段)中。O/P: '7661(K)','TRIM(K)','R-蒙特利爾-QC(R)','R-PRUPERT-BC(K)','CNSHG(K)','R- PRUPERT-BC(K)','CAPRR(B)','CNSHG(K)','TWJV'
然後我想將括號內的所有項目存儲在單獨的列(類型)O/P 中:K、K、R、K、K、K、B、K
然後,我想通過修改段列將位置存儲在另一列(稱為位置)中,以刪除項目包括括號和項目之間的 O/P:'7661','TRIM','R-MONTREAL-QC','R- PRUPERT-BC','CNSHG,R-PRUPERT-BC','CAPRR','CNSHG','TWJV'
最後 O/P 看起來像這樣
all_seg_ment | 部分 | 類型 | 地點 |
---|---|---|---|
7661(K)-TRIM(K)-R-蒙特利爾-QC(R)-R-PRUPERT-BC(K)-CNSHG(K)-R-PRUPERT-BC(K)-CAPRR(B)-CNSHG(K) )-TWJV | '7661(K)','TRIM(K)','R-蒙特利爾-QC(R)','R-PRUPERT-BC(K)','CNSHG(K)','R-PRUPERT-BC( K)','CAPRR(B)','CNSHG(K)','TWJV' | 'K','K','R','K','K','K','B','K' | '7661','TRIM','R-蒙特利爾-QC','R-PRUPERT-BC','CNSHG,R-PRUPERT-BC','CAPRR','CNSHG','TWJV' |
我在上面嘗試過拆分“-”的位置,但在某些情況下它不起作用。所以請幫助我我對正則表達式不清楚。非常感謝。
假設您的初始列名為all
,您可以使用str.replace
來替換以右括號開頭的破折號,str.extractall
並與groupby
+結合agg
以分別提取和連接括號內外的元素:
df['segment'] = "'"+df['all'].str.replace(r'(?<=\))-', "','", regex=True)+"'"
df = df.join("'"+(df['all'].str.extractall(r'(?P<location>.+?)\((?P<type>\w)\)-')
.groupby(level=0).agg("','".join)
)+"'")
輸出:
all segment location type
0 7661(K)-TRIM(K)-R-MONTREAL-QC(R)-R-PRUPERT-BC(... '7661(K)','TRIM(K)','R-MONTREAL-QC(R)','R-PRUP... '7661','TRIM','R-MONTREAL-QC','R-PRUPERT-BC','... 'K','K','R','K','K','K','B','K'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句