从数据框中的字符串中提取子字符串
Extract substring from string in dataframe
我有以下数据框:
Company Name Time Expectation
0 Asta Funding Inc. (ASFI) 9:35 AM ET -
1 BlackBerry (BBRY) 7:00 AM ET ([=10=].03)
2 Carnival Corp. (CCL) 9:15 AM ET [=10=].09
3 Carnival PLC (CUK) 0:00 AM ET -
我想将公司符号放在它们自己单独的列中,而不是放在“公司名称”列中。现在我只是让它遍历公司名称,然后 RE 提取符号,将其放入列表中,然后将其应用于新列,但我想知道是否有 cleaner/easier 方法.
我是整个 map reduce lambda 的新手。
for company in df['Company Name']:
ticker = re.search("\(.*\)",company).group(0)
ticker = ticker[1:len(ticker)-1]
tickers.append(ticker)
您可以利用 str
对整个系列进行元素运算这一事实。我假设公司的符号总是在公司名称的末尾并被括号包围:
df['Company Symbol'] = df['Company Name'].str.rstrip(')').str.split('(').str[1] # Make new column
df['Company Name'] = df['Company Name'].str.replace(r'\(.*?\)$', '') # Remove symbol from company name
pandas 中的系列 class 中内置了正则表达式搜索。您可以找到文档 here。
在你的情况下,你可以使用
df['ticker'] = df['Company Name'].str.extract("\((.*)\)")
我有以下数据框:
Company Name Time Expectation
0 Asta Funding Inc. (ASFI) 9:35 AM ET -
1 BlackBerry (BBRY) 7:00 AM ET ([=10=].03)
2 Carnival Corp. (CCL) 9:15 AM ET [=10=].09
3 Carnival PLC (CUK) 0:00 AM ET -
我想将公司符号放在它们自己单独的列中,而不是放在“公司名称”列中。现在我只是让它遍历公司名称,然后 RE 提取符号,将其放入列表中,然后将其应用于新列,但我想知道是否有 cleaner/easier 方法.
我是整个 map reduce lambda 的新手。
for company in df['Company Name']:
ticker = re.search("\(.*\)",company).group(0)
ticker = ticker[1:len(ticker)-1]
tickers.append(ticker)
您可以利用 str
对整个系列进行元素运算这一事实。我假设公司的符号总是在公司名称的末尾并被括号包围:
df['Company Symbol'] = df['Company Name'].str.rstrip(')').str.split('(').str[1] # Make new column
df['Company Name'] = df['Company Name'].str.replace(r'\(.*?\)$', '') # Remove symbol from company name
pandas 中的系列 class 中内置了正则表达式搜索。您可以找到文档 here。 在你的情况下,你可以使用
df['ticker'] = df['Company Name'].str.extract("\((.*)\)")