По сути, это похоже на n_unique, но как оконная функция.
Для иллюстрации на игрушечном примере:
Код: Выделить всё
import polars as pl
dataframe = pl.DataFrame({
'context': [1, 1, 1, 2, 2, 2, 3, 3, 3],
'column1': [1, 1, 0, 1, 0, 0, 1, 0, 1],
'column2': [1, 0, 0, 0, 1, 1, 1, 0, 1]
# unique: 1 2 3 1 2 - 1 2 -
# n_unique: -- 3 -- -- 2 -- -- 2 --
})
Код: Выделить всё
dataframe = (
dataframe
.with_columns(
pl.n_unique('column1', 'column2').over('context').alias('n_unique')
)
)
Одна из моих попыток заключалась в следующем:
Код: Выделить всё
(dataframe
.with_columns(
pl.concat_list('column1', 'column2').alias('pair')
)
.with_columns(
pl.n_unique('pair').over('context')
)
)
Подробнее здесь: https://stackoverflow.com/questions/740 ... w-function