Я пытаюсь проверить, содержит ли string_1 = "this example string"
значение столбца в качестве подстроки.
Например, первое значение в Col B
должно быть True
, поскольку "example"
является подстрокой string_1.
string_1 = "this example string"
df = pl.from_repr("""
┌────────┬─────────┬────────────┐
│ Col A ┆ Col B ┆ Col C │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str │
╞════════╪═════════╪════════════╡
│ 448220 ┆ example ┆ 7101936801 │
│ 518398 ┆ 99999 ┆ 9999900091 │
│ 557232 ┆ 424570 ┆ 4245742060 │
└────────┴─────────┴────────────┘
""")
Это то, что я пробовал до сих пор, но возвращает следующую ошибку:
df=df.with_columns(pl.col("Col B").apply(lambda x: x in string_1).alias("new_col"))
AttributeError: 'Expr' object has no attribute 'apply'
Вместо того, чтобы выходить за пределы системы Expression, пробовали ли вы использовать Expression.str.contains? docs.pola.rs/api/python/stable/reference/expressions/api/…
Всегда лучше избегать использования функций Python и использовать собственные полярные выражения.
string_1
(
df
.with_columns(pl.lit(string_1).str.contains(pl.col('Col B')).alias('new_col')
)
Или вы можете использовать name.keep(), если хотите проверить все столбцы.
(
df
.with_columns(pl.lit(string_1).str.contains(pl.all()).name.keep())
)
┌───────┬───────┬───────┐
│ Col A ┆ Col B ┆ Col C │
│ --- ┆ --- ┆ --- │
│ bool ┆ bool ┆ bool │
╞═══════╪═══════╪═══════╡
│ false ┆ true ┆ false │
│ false ┆ false ┆ false │
│ false ┆ false ┆ false │
└───────┴───────┴───────┘
или что-то вроде этого, если вам нужны все новые столбцы:
(
df
.with_columns(pl.lit(string_1).str.contains(pl.all()).name.suffix('_match'))
)
┌────────┬─────────┬────────────┬─────────────┬─────────────┬─────────────┐
│ Col A ┆ Col B ┆ Col C ┆ Col A_match ┆ Col B_match ┆ Col C_match │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ str ┆ str ┆ bool ┆ bool ┆ bool │
╞════════╪═════════╪════════════╪═════════════╪═════════════╪═════════════╡
│ 448220 ┆ example ┆ 7101936801 ┆ false ┆ true ┆ false │
│ 518398 ┆ 99999 ┆ 9999900091 ┆ false ┆ false ┆ false │
│ 557232 ┆ 424570 ┆ 4245742060 ┆ false ┆ false ┆ false │
└────────┴─────────┴────────────┴─────────────┴─────────────┴─────────────┘
Вместо применения вы пробовали карту?