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

Python Pandas:从DataFrame列提取行权价与类型至新列

解决方案

针对你的需求,我们可以通过更精准的正则表达式提取行权价(strike),同时优化类型(type)的提取逻辑:

提取行权价(strike)

利用正则的正向预查特性,精准匹配位于CE/PE之前的5位连续数字,避免误匹配日期部分的数字:

df['strike'] = df['symbol'].str.extract(r'(\d{5})(?=[CP]E$)', expand=False)

正则说明:

  • \d{5}:匹配连续5位数字
  • (?=[CP]E$):正向预查,确保这5位数字后紧跟CE或PE,且处于字符串末尾

优化类型(type)提取

替换你之前的正则,直接匹配字符串末尾的CE/PE,更简洁准确:

df['type'] = df['symbol'].str.extract(r'([CP]E$)', expand=False)

测试示例

针对你的示例值BANKNIFTY25JAN2436500CE,执行后会得到:

  • strike列值:36500
  • type列值:CE

备选方案(固定格式场景)

如果你的symbol格式完全固定(品种名、日期长度均不变),也可以用字符串切片快速提取:

# 从倒数第7位到倒数第2位取行权价,倒数2位取类型
df['strike'] = df['symbol'].str[-7:-2]
df['type'] = df['symbol'].str[-2:]

这种方法性能略高,但依赖格式固定,灵活性不如正则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:32:41