使用 str.extract 提取极坐标中的多个匹配项

问题描述 投票:0回答:2
df = pl.DataFrame(
    {
        "a": [
            "name=John, name=Billy",
            "name=Jeff",
            "name=Taylor",
        ]
    }
)

df.select(
    pl.col("a").str.extract(r"name=(\w+)", 1),
)

我会得到一个带有

John, Jeff, Taylor
的系列。我想知道是否有办法
extract_all
(?) 并同时获得
Billy
?我意识到这会改变结果序列的维度,但只是想知道这种方法是否可用。

python python-polars
2个回答
3
投票

其实还有一个

str.extract_all
方法

df.select(
    pl.col("a")
    .str.extract_all(r"name=\w+")
    .explode()
    .str.extract(r"name=(\w+)")
    .alias("names")
)
shape: (4, 1)
┌────────┐
│ names  │
│ ---    │
│ str    │
╞════════╡
│ John   │
│ Billy  │
│ Jeff   │
│ Taylor │
└────────┘

1
投票

你可以尝试:

>>> df.select(
        pl.col('a').str.split(', ').explode()
                   .str.extract('name=(\w+)')
    )

shape: (4, 1)
┌────────┐
│ a      │
│ ---    │
│ str    │
╞════════╡
│ John   │
│ Billy  │
│ Jeff   │
│ Taylor │
└────────┘
© www.soinside.com 2019 - 2024. All rights reserved.