Есть ли способ group_by в полярах, сохраняя при этом другие столбцы?Python

Программы на Python
Ответить
Anonymous
 Есть ли способ group_by в полярах, сохраняя при этом другие столбцы?

Сообщение Anonymous »

В настоящее время я пытаюсь получить полярную группу group_by, сохраняя при этом другие столбцы, кроме тех, что указаны в функции group_by.
Вот пример имеющегося у меня фрейма входных данных.

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

import polars as pl

df = pl.from_repr("""
┌─────┬─────┬─────┬─────┐
│ SRC ┆ TGT ┆ IT  ┆ Cd  │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ f64 │
╞═════╪═════╪═════╪═════╡
│ 1   ┆ 1   ┆ 2   ┆ 3.0 │
│ 2   ┆ 1   ┆ 2   ┆ 4.0 │
│ 3   ┆ 1   ┆ 2   ┆ 3.0 │
│ 3   ┆ 2   ┆ 1   ┆ 8.0 │
└─────┴─────┴─────┴─────┘
""")
Я хочу сгруппировать по ['TGT', 'IT'], используя min('Cd'), это следующий код:

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

df.group_by('TGT', 'IT').agg(pl.col('Cd').min())
С помощью этой строки кода я получаю следующий кадр данных.

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

┌─────┬─────┬─────┐
│ TGT ┆ IT  ┆ Cd  │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ f64 │
╞═════╪═════╪═════╡
│ 1   ┆ 2   ┆ 3.0 │
│ 2   ┆ 1   ┆ 8.0 │
└─────┴─────┴─────┘
А вот кадр данных, который мне бы хотелось

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

┌─────┬─────┬─────┬─────┐
│ SRC ┆ TGT ┆ IT  ┆ Cd  │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ f64 │
╞═════╪═════╪═════╪═════╡
│ 1   ┆ 1   ┆ 2   ┆ 3.0 │
│ 3   ┆ 2   ┆ 1   ┆ 8.0 │
└─────┴─────┴─────┴─────┘
Я думаю, что мог бы добиться этого, присоединив первый кадр данных к сгруппированному, используя ['TGT', 'IT', 'Cd'], а затем удалив удвоенные строки, так как мне нужен только один (и любой) 'SRC' для каждой пары ('TGT', 'IT'). Но я хотел знать, есть ли более простой способ сделать это, особенно сохранив столбец «SRC» во время group_by
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/770 ... er-columns
Ответить

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

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

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

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

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