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

如何用Python Pandas提取每行文本中以小写v开头的股票编号?

解决思路与实现代码

先排查基础问题

先确认几个可能导致你之前操作失败的关键点:

  • 检查STOCKS列的数据类型:如果是数值类型,字符串方法(str.startswith/str.extract)会直接失效,先转成字符串类型:
    df['STOCKS'] = df['STOCKS'].astype(str)
    
  • 检查列中是否存在前后空格:看不见的空格会导致匹配失效,先统一清理:
    df['STOCKS'] = df['STOCKS'].str.strip()
    

方法1:直接筛选以小写'v'开头的行

如果STOCKS列每一行就是单个股票编号,用str.startswith直接筛选,同时排除空值避免报错:

# 筛选符合条件的整行数据
v_stocks_df = df[df['STOCKS'].str.startswith('v', na=False)]
# 提取对应的股票编号列表
v_stocks_list = v_stocks_df['STOCKS'].tolist()

方法2:提取混合内容中的目标编号

如果STOCKS列包含其他文本(比如"持仓:v109485, v203940"),用正则表达式精准提取以'v'开头、后续为数字的编号:

# 提取每行中第一个符合格式的编号
df['target_stock'] = df['STOCKS'].str.extract(r'(v\d+)', expand=False)
# 筛选提取到有效编号的行
v_stocks_df = df[df['target_stock'].notna()]

正则v\d+完全贴合你给出的v109485格式——匹配小写v开头,后续全为数字的内容。

额外排查点

如果还是无法匹配,打印列的前10行确认具体格式:

print(df['STOCKS'].head(10))

查看是否存在特殊字符、大小写混用(比如大写V),如果需要兼容大小写,在startswith中添加case=False即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 16:52:04