Existe uma maneira de gerar combinações de itens dentro de uma lista dentro de uma coluna Polars sem recorrer ao .map_elements()
+ itertools para cada linha?
Esta é a minha solução atual:
import polars as pl
import itertools
(pl.DataFrame({'col': [['a', 'b', 'c']]})
.with_columns(pl.col('col')
.map_elements(lambda list_o_things: [sorted((thing_1, thing_2))
for thing_1, thing_2
in itertools.combinations(list_o_things, 2)])
)
)
que retorna isso:
[['a', 'b'], ['a', 'c'], ['b', 'c']]
Explodir a estrutura aninhada, fazer uma junção cruzada com ela mesma, filtrar as entradas redundantes, concatenar para a lista e implodir para a lista aninhada.