Начиная с этого кадра данных :
Код: Выделить всё
df = pl.DataFrame({
'identity_vector': [[True, False], [False, True]],
'string_vector': [['name1', 'name2'], ['name3', 'name4']]
})
shape: (2, 2)
┌─────────────────┬────────────────────┐
│ identity_vector ┆ string_vector │
│ --- ┆ --- │
│ list[bool] ┆ list[str] │
╞═════════════════╪════════════════════╡
│ [true, false] ┆ ["name1", "name2"] │
│ [false, true] ┆ ["name3", "name4"] │
└─────────────────┴────────────────────┘
Код: Выделить всё
shape: (2, 3)
┌─────────────────┬────────────────────┬──────────────────┐
│ identity_vector ┆ string_vector ┆ filtered_strings │
│ --- ┆ --- ┆ --- │
│ list[bool] ┆ list[str] ┆ list[str] │
╞═════════════════╪════════════════════╪══════════════════╡
│ [true, false] ┆ ["name1", "name2"] ┆ ["name1", null] │
│ [false, true] ┆ ["name3", "name4"] ┆ [null, "name4"] │
└─────────────────┴────────────────────┴──────────────────┘
Код: Выделить всё
df.with_columns(
filtered_strings=pl.struct(["string_vector", "identity_vector"]).map_elements(
lambda row: [s if keep else None for s, keep in zip(row["string_vector"], row["identity_vector"])]
)
)
Подробнее здесь: https://stackoverflow.com/questions/792 ... eping-list