Кадр данных Polars: как эффективно агрегировать по множеству непересекающихся группPython

Программы на Python
Anonymous
Кадр данных Polars: как эффективно агрегировать по множеству непересекающихся групп

Сообщение Anonymous »

У меня есть кадр данных со столбцами x, y, c_1, c2, ..., c_K, где K несколько велико (K ≈ 1000 или 2000).
Каждый из столбцов c_i является логическим столбцом, и я хотел бы вычислить агрегацию f(x, y) по строки, где c_i имеет значение True. (Например, f(x,y) = x.sum() * y.sum().)
Один из способов сделать это:

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

ds.select([
f(pl.col("x").filter(pl.col(f"c_{i+1}"), pl.col("y").filter(pl.col(f"c_{i+1}"))
for i in range(K)
])
В моей задаче число K велико, и приведенный выше запрос кажется несколько неэффективным (фильтрация выполняется дважды).
  • Какой рекомендуемый/самый эффективный/самый элегантный способ добиться этого?


Подробнее здесь: https://stackoverflow.com/questions/790 ... int-groups

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