Polars: как удалить первую строку в случае дублирования идентификаторовPython

Программы на Python
Ответить
Anonymous
 Polars: как удалить первую строку в случае дублирования идентификаторов

Сообщение Anonymous »

У меня есть фрейм данных типа

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

pl.DataFrame({"id":[1,2,2,2,2,3,3,3],"value":[5,6,1,2,3,30,10,20]})
┌─────┬───────┐
│ id  ┆ value │
│ --- ┆ ---   │
│ i64 ┆ i64   │
╞═════╪═══════╡
│ 1   ┆ 5     │
│ 2   ┆ 6     │
│ 2   ┆ 1     │
│ 2   ┆ 2     │
│ 2   ┆ 3     │
│ 3   ┆ 30    │
│ 3   ┆ 10    │
│ 3   ┆ 20    │
└─────┴───────┘
В случае нескольких строк с одинаковым идентификатором значение первой строки всегда является суммой значений остальных строк. Моя цель — удалить эти суммы из фрейма данных, т.е. я хочу получить

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

┌─────┬───────┐
│ id  ┆ value │
│ --- ┆ ---   │
│ i64 ┆ i64   │
╞═════╪═══════╡
│ 1   ┆ 5     │
│ 2   ┆ 1     │
│ 2   ┆ 2     │
│ 2   ┆ 3     │
│ 3   ┆ 10    │
│ 3   ┆ 20    │
└─────┴───────┘
Есть ли какой-нибудь эффективный способ сделать это в полярах? Я знаю о group_by, но не знаю, как реализовать условную логику, основанную на количестве элементов в списке.

Подробнее здесь: https://stackoverflow.com/questions/772 ... licate-ids
Ответить

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

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

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

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

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