Polars сохраняет наибольшую ценность, используя 2 категорииPython

Программы на Python
Anonymous
 Polars сохраняет наибольшую ценность, используя 2 категории

Сообщение Anonymous »

У меня есть фрейм данных Polars, который содержит некоторые идентификаторы, действия и значения:
Пример фрейма данных:

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

data = {
"ID" : [1, 1, 2,2,3,3],
"Action" : ["A", "A", "B", "B", "A", "A"],
"Where" : ["Office", "Home", "Home", "Office", "Home", "Home"],
"Value" : [1, 2, 3, 4, 5, 6]
}

df = pl.DataFrame(data)
Я хочу выбрать для каждого идентификатора и действия наибольшее значение, чтобы знать, где он предпочитает выполнять действие.
Я использую следующий подход:

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

(
df
.select(
pl.col("ID"),
pl.col("Action"),
pl.col("Where"),
TOP = pl.col("Value").max().over(["ID", "Action"]))
)
После этого я отсортировал значения и сохранил уникальные значения (первые), чтобы сохранить нужную информацию, однако введенные данные неверны:

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

(
df
.select(
pl.col("ID"),
pl.col("Action"),
pl.col("Where"),
TOP = pl.col("Value").max().over(["ID", "Action"]))
.sort(
pl.col("*"), descending =True
)
.unique(
subset = ["ID", "Action"],
maintain_order = True,
keep = "first"
)
)
Текущий результат:

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

shape: (3, 4)
┌─────┬────────┬────────┬─────┐
│ ID  ┆ Action ┆ Where  ┆ TOP │
│ --- ┆ ---    ┆ ---    ┆ --- │
│ i64 ┆ str    ┆ str    ┆ i64 │
╞═════╪════════╪════════╪═════╡
│ 3   ┆ A      ┆ Home   ┆ 6   │
│ 2   ┆ B      ┆ Office ┆ 4   │
│ 1   ┆ A      ┆ Office ┆ 2   │
└─────┴────────┴────────┴─────┘
Ожидаемый результат:

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

shape: (3, 4)
┌─────┬────────┬────────┬─────┐
│ ID  ┆ Action ┆ Where  ┆ TOP │
│ --- ┆ ---    ┆ ---    ┆ --- │
│ i64 ┆ str    ┆ str    ┆ i64 │
╞═════╪════════╪════════╪═════╡
│ 3   ┆ A      ┆ Home   ┆ 6   │
│ 2   ┆ B      ┆ Office ┆ 4   │
│ 1   ┆ A      ┆ Home   ┆ 2   │
└─────┴────────┴────────┴─────┘
Кроме того, я думаю, что этот подход не является оптимальным

Подробнее здесь: https://stackoverflow.com/questions/789 ... categories

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