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

Polars字符串操作报错:如何从option_type提取数字生成strike列?

解决Polars中提取字符串前缀并转为整数的报错问题

问题原因

你写的代码报错是因为str.split("_")返回的是列表类型的表达式,后续不能再用.str命名空间去取下标,得切换到.list命名空间操作列表元素。

正确写法

方法1:修正split后的索引操作

把.str[0]改成.list[0]即可:

pl.col("option_type").str.split("_").list[0].astype(int)

方法2:更精准的正则提取(推荐)

既然已经筛选了以_P结尾的行,直接用正则提取_前的数字部分,逻辑更清晰:

pl.col("option_type").str.extract(r"(\d+)_P$").astype(int)

完整示例

假设你的DataFrame是这样的:

import polars as pl

df = pl.DataFrame({
    "option_type": ["300_P", "400_C", "500_P", "600_P"]
})

# 筛选+生成strike列
result = df.filter(pl.col("option_type").str.ends_with("_P")).with_columns(
    strike=pl.col("option_type").str.split("_").list[0].astype(int)
    # 或者用正则写法:strike=pl.col("option_type").str.extract(r"(\d+)_P$").astype(int)
)

print(result)

输出结果:

shape: (3, 2)
┌─────────────┬───────┐
│ option_type ┆ strike│
│ ---         ┆ ---   │
│ str         ┆ i64   │
╞═════════════╪═══════╡
│ 300_P       ┆ 300   │
│ 500_P       ┆ 500   │
│ 600_P       ┆ 600   │
└─────────────┴───────┘

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:42:11