从dataframe中的字符串中提取子字符串

nic*_*hel 4 python split pandas

我有以下ddataframe:

                             Company Name        Time Expectation
0                Asta Funding Inc. (ASFI)  9:35 AM ET           -
1                       BlackBerry (BBRY)  7:00 AM ET     ($0.03)
2                    Carnival Corp. (CCL)  9:15 AM ET       $0.09
3                      Carnival PLC (CUK)  0:00 AM ET           -
Run Code Online (Sandbox Code Playgroud)

我想将公司符号放在他们自己的单独列中,而不是在公司名称列中.现在我只是迭代公司名称,RE拉出符号,将其放入列表,然后我将其应用到新列,但我想知道是否有更清洁/更简单的方法.

我是整个地图的新手减少lambda的东西.

for company in df['Company Name']:
    ticker = re.search("\(.*\)",company).group(0)
    ticker = ticker[1:len(ticker)-1]
    tickers.append(ticker)
Run Code Online (Sandbox Code Playgroud)

mik*_*dal 17

正则表达式搜索内置于pandas中的Series类中.你可以在这里找到文档.在你的情况下,你可以使用

df['ticker'] = df['Company Name'].str.extract("\((.*)\)") 
Run Code Online (Sandbox Code Playgroud)

  • @mobone 将正则表达式更改为 `"\((.*)\)"`,注意在 `.*` 周围添加的括号使匹配的部分成为一个组 (2认同)