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

如何删除Polars DataFrame中匹配指定正则表达式的行?

解决Polars DataFrame删除含指定正则表达式行的问题

你之前的操作只是生成了标记匹配情况的布尔Series,但没有对DataFrame执行过滤操作,直接赋值反而会新增列。正确的做法是用filter()方法结合取反的匹配条件,保留不匹配正则的行(也就是删除匹配的行)。

具体实现

import polars as pl

# 定义目标列和正则表达式
target_col = "col1"
regex_pattern = r"你的正则表达式"

# 过滤掉匹配正则的行,保留不匹配的
filtered_df = df.filter(~pl.col(target_col).str.contains(regex_pattern))

示例说明

假设原始DataFrame如下:

df = pl.DataFrame({
    "col1": ["apple123", "banana", "cherry45", "date"],
    "col2": [10, 20, 30, 40]
})

如果要删除col1中包含数字的行(正则用r"\d"),执行过滤后得到的filtered_df结果为:

shape: (2, 2)
┌────────┬──────┐
│ col1   ┆ col2 │
│ ---    ┆ ---  │
│ str    ┆ i64  │
├────────┼──────┤
│ banana ┆ 20   │
│ date   ┆ 40   │
└────────┴──────┘

关键说明

  • ~符号用于对布尔Series取反,把“匹配正则”的标记转为“不匹配”,这样filter()就会保留这些行,间接实现删除匹配行的需求。
  • 不要直接将str.contains()的结果赋值给DataFrame的新列(比如df["filter"] = ...),这就是你之前生成额外布尔列的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:09:52