You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从pandas DataFrame的描述字段中提取股票代码(Ticker)?

问题描述

我已经把以下数据转换成了pandas DataFrame:

{17: '200 shares ExD 2022-09-21 PD 2022-09-30 dividend GAIN.NASDAQ 15.00 USD (0.075 per share) tax -2.25 USD (-15.000%) DivCntry US USIncmCode 06',
18: '101 shares ExD 2022-09-21 PD 2022-09-30 dividend LTC.NYSE 19.19 USD (0.19 per share) tax -2.88 USD (-15.000%) DivCntry US USIncmCode 06',    
19: '302 shares ExD 2022-09-29 PD 2022-10-12 dividend AGNC.NASDAQ 36.24 USD (0.12 per share) tax -5.44 USD (-15.000%) DivCntry US USIncmCode 06',     
20: '92 shares ExD 2022-07-07 PD 2022-08-22 dividend BTI.NYSE 60.31 USD (0.655523 per share) tax -0.00 USD (-0.0%) DivCntry GB fee amount -0.46 USD (0.005 per share)',     
21: '75 shares ExD 2022-09-14 PD 2022-10-11 dividend MO.NYSE 70.50 USD (0.94 per share) tax -10.58 USD (-15.000%) DivCntry US USIncmCode 06'}

我需要从中仅提取股票代码(比如GAIN.NASDAQ、LTC.NYSE这类),但当前的代码会返回整行描述:

import pandas as pd
....
description = dividends[["Description"]]      # 这是一个名为"Description"的DataFrame,每行内容如上所示                                    
ticker = description[description['Description'].str.contains('.NYSE')]
print(ticker)

请问该如何修改代码来只获取股票代码?

解决方案

可以用正则表达式配合pandas的str.extract()方法精准提取股票代码,因为股票代码的格式是「字母/数字组合+.+交易所代码」,比如GAIN.NASDAQ、LTC.NYSE,正则可以完美匹配这种模式。

方法1:提取所有交易所的股票代码

import pandas as pd

# 假设你的主DataFrame是dividends,列名为"Description"
dividends['Ticker'] = dividends['Description'].str.extract(r'(\w+\.(NYSE|NASDAQ))')[:, 0]
# 提取后可单独取出股票代码列,去掉空值并转成列表
tickers = dividends['Ticker'].dropna().tolist()
print(tickers)
  • 正则r'(\w+\.(NYSE|NASDAQ))':匹配一个或多个字母/数字(\w+),加上转义后的点号(\.),再匹配NYSE或NASDAQ;分组后取第一列就是完整的股票代码。
  • dropna()过滤匹配失败的空值,tolist()将结果转为列表格式。

方法2:只提取NYSE的股票代码

如果只需要筛选NYSE的代码,修改正则即可:

nyse_tickers = dividends['Description'].str.extract(r'(\w+\.NYSE)').dropna().squeeze().tolist()
print(nyse_tickers)
  • squeeze()将单列DataFrame转换为Series,方便后续转成列表。

针对你现有代码的修改

如果description是你单独取出的dividends[["Description"]],直接对它操作:

description['Ticker'] = description['Description'].str.extract(r'(\w+\.(NYSE|NASDAQ))')[:, 0]
# 打印提取出的股票代码
print(description['Ticker'].dropna())

内容的提问来源于stack exchange,提问作者Blaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:35:25