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

Pandas正则表达式问题:从含特定标识的字符串中正确提取股票名称

解决Pandas正则提取股票名称的问题

嘿,我来帮你搞定这个正则和Pandas的问题!首先先解释你遇到的ValueError:你写的正则里有两个捕获组(外层的括号和里面的^|Correction ),而str.extract默认会把每个捕获组的结果作为单独的列返回,所以它返回了2列数据,但你要赋值给一个名为Share Name的列,就出现了“传递了2个元素,但只需要1个”的错误。

接下来是解决方法,我们需要调整正则,让它:

  • 忽略开头的Correction 前缀
  • 只保留一个捕获组,确保str.extract返回单列数据
  • 正确匹配到终止词(DIVIDEND、(All、CONS、COMM、Section)之前的股票名称

修正后的正则与代码

使用非捕获组(?:...)来处理开头的可选前缀(要么是字符串起始,要么是Correction ),这样就不会生成额外的捕获组,只捕获我们需要的股票名称部分:

transactions_df["Share Name"] = transactions_df["MarketName"].str.extract(r"(?:^|Correction )(.*?(?=DIVIDEND|\(All|CONS|COMM|Section))")

验证每个示例的提取结果

  • Netflix DIVIDEND → 提取结果:Netflix
  • Apple Inc (All Sessions) COMM → 提取结果:Apple Inc (如果想去掉末尾空格,可以再加个.str.strip())
  • Intel Corporation CONS → 提取结果:Intel Corporation (同样可以用strip()处理空格)
  • Correction Netflix Section 31 Fee → 提取结果:Netflix

额外优化(可选)

如果你的数据里还有其他类似的前缀(比如Adjustment 、Reversal ),可以直接在非捕获组里添加,同时加上strip()清理首尾空格:

transactions_df["Share Name"] = transactions_df["MarketName"].str.extract(r"(?:^|Correction |Adjustment |Reversal )(.*?(?=DIVIDEND|\(All|CONS|COMM|Section))").str.strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:12:27