Polars Python: фильтровать столбец списка, используя логический столбец списка, но сохраняя размер спискаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Polars Python: фильтровать столбец списка, используя логический столбец списка, но сохраняя размер списка

Сообщение Anonymous »

Я хотел бы получить элементы из столбца dtype списка, используя другой столбец логического списка и сохранив исходный размер списка (в отличие от этого решения).
Начиная с этого кадра данных :

Код: Выделить всё

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"]  │
└─────────────────┴────────────────────┴──────────────────┘

Это я могу получить, используя приведенный ниже блок кода и map_elements, но решение неоптимально по соображениям производительности:

Код: Выделить всё

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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»