我正在做一個路由專案。路線看起來像這樣"CNSHG(B)-PAMIT(R)-COCTG(B)-USHOU(R)-COCTG(B)-USMSY",我想把它分解成一個嵌套串列。此外,一條路線包含多個段,例如 CNSHG-PAMIT 是使用 B 運輸的一個段,然后使用 R(即鐵路)運輸的 PAMIT-COCTG,等等。
輸入:
"CNSHG(B)-PAMIT(R)-COCTG(B)-USHOU(R)-COCTG(B)-USMSY"
輸出應該是這樣的:
[[CNSHG, PAMIT, B],[PAMIT, COCTG, R],[COCTG, USHOU, B],[USHOU, COCTG, R],[COCTG, USMSY, B]]
我曾嘗試使用正則運算式和以下代碼,但沒有奏效。
route.str.extract('(.)\s\((.\d )')
非常感謝。
uj5u.com熱心網友回復:
您可以使用
import pandas as pd
df = pd.DataFrame({'col':["CNSHG(B)-PAMIT(R)-COCTG(B)-USHOU(R)-COCTG(B)-USMSY"]})
df['result'] = df['col'].str.findall(r'(\w )\((?=[^()]*\)-(\w ))([^()]*)\)')
的輸出df['result']:
[('CNSHG', 'PAMIT', 'B'), ('PAMIT', 'COCTG', 'R'), ('COCTG', 'USHOU', 'B'), ('USHOU', 'COCTG', 'R'), ('COCTG', 'USMSY', 'B')]
請參閱正則運算式演示。詳情:
(\w )- 一個或多個字字符\(- 一個(字符(?=[^()]*\)-(\w ))- 正向前瞻,需要(立即在當前位置的右側):[^()]*- 除(和之外的零個或多個字符)\)-- 一個)-字串(\w )- 第 2 組:一個或多個單詞字符
([^()]*)- 第 3 組:除(和之外的零個或多個字符)\)- 一個)字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/392043.html
上一篇:Pandas僅在某些列值旁邊連接
