你可以試試str.extract
法正則表達式:
data = ["1. stock1 (1991)",
"3. stock13 (1993)",
"5. stock19 (1999)",
"89. stock105 (2001)"]
s = pd.Series(data)
s.str.extract("(?P<sno>\d+)\.\s(?P<sdata>\w+)\s\((?P<year>\d+)\)", expand=True)
# sno sdata year
#0 1 stock1 1991
#1 3 stock13 1993
#2 5 stock19 1999
#3 89 stock105 2001
分解的正則表達式,(?P<sno>\d+)\.\s(?P<sdata>\w+)\s\((?P<year>\d+)\)
可以簡化爲(\d+)\.\s(\w+)\s\((\d+)\)
不點名所捕獲的基團(其與?P<name>
完成); (\d+)
,(\w+)
和(\d+)
分別s.no,stockname和年捕獲。
或者你可能只是想拆就白空間和高達根據您的實際數據看起來像那麼幹淨列:
(s.str.split(" ", expand=True)
# strip period and parenthesis
.apply(lambda col: col.str.strip(".()"))
# rename columns
.rename(columns={0: "s.no", 1: "sdata", 2: "year"}))
# s.no sdata year
#0 1 stock1 1991
#1 3 stock13 1993
#2 5 stock19 1999
#3 89 stock105 2001
您可能需要添加一個標誌正則表達式(正則表達式)在你的問題上。 – Jon
這似乎是一個比熊貓更正則的問題 – Jon