Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filter rows using a case insensitive search in Polars

How to perform case insensitive search in polars python,

pdf.filter(pl.col("REFERENCE_2").str.contains("search string"))

want to search string "Search String or Search string"

similar like pandas

pdf.filter(pl.col("REFERENCE_2").str.contains("search string", case=False))
like image 733
Suresh Subramaniyan Avatar asked Nov 17 '25 11:11

Suresh Subramaniyan


1 Answers

.str.contains() takes a valid (Rust) regex pattern.

  • See: https://docs.rs/regex/latest/regex/#grouping-and-flags

(?i) can be used in a pattern to enable case-insensitive matching.

df = pl.DataFrame({
   "col": ["seARch StRInG", "search string", "search", "string"]
})
df.with_columns(
   contains = pl.col("col").str.contains(r"(?i)search string")
)
shape: (4, 2)
┌───────────────┬──────────┐
│ col           ┆ contains │
│ ---           ┆ ---      │
│ str           ┆ bool     │
╞═══════════════╪══════════╡
│ seARch StRInG ┆ true     │
│ search string ┆ true     │
│ search        ┆ false    │
│ string        ┆ false    │
└───────────────┴──────────┘

(?-i) can be used to disable it if you need to apply only to a specific part of the pattern.

df.with_columns(
   contains = pl.col("col").str.contains("(?i)SEARCH(?-i) string")
)
shape: (4, 2)
┌───────────────┬──────────┐
│ col           ┆ contains │
│ ---           ┆ ---      │
│ str           ┆ bool     │
╞═══════════════╪══════════╡
│ seARch StRInG ┆ false    │
│ search string ┆ true     │
│ search        ┆ false    │
│ string        ┆ false    │
└───────────────┴──────────┘

Alternatively, if you do not need regex matching there is .str.contains_any() which has the ascii_case_insensitive parameter.

df.with_columns(
   pl.col("col").str.contains_any(
      ["search string"],
      ascii_case_insensitive=True
   )
   .alias("contains_any")
)
shape: (4, 2)
┌───────────────┬──────────────┐
│ col           ┆ contains_any │
│ ---           ┆ ---          │
│ str           ┆ bool         │
╞═══════════════╪══════════════╡
│ seARch StRInG ┆ true         │
│ search string ┆ true         │
│ search        ┆ false        │
│ string        ┆ false        │
└───────────────┴──────────────┘
like image 73
jqurious Avatar answered Nov 20 '25 01:11

jqurious