Перечислите каждую группуPython

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

Сообщение Anonymous »

Начиная с
df = pl.DataFrame({'group': [1, 1, 1, 3, 3, 3, 4, 4]})

как я могу получить столбец, который нумерует столбец «группа»?
Вот как выглядит df:
shape: (8, 1)
┌───────┐
│ group │
│ --- │
│ i64 │
╞═══════╡
│ 1 │
│ 1 │
│ 1 │
│ 3 │
│ 3 │
│ 3 │
│ 4 │
│ 4 │
└───────┘

и вот мой ожидаемый результат:
shape: (8, 2)
┌───────┬─────────┐
│ group ┆ group_i │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═══════╪═════════╡
│ 1 ┆ 0 │
│ 1 ┆ 0 │
│ 1 ┆ 0 │
│ 3 ┆ 1 │
│ 3 ┆ 1 │
│ 3 ┆ 1 │
│ 4 ┆ 2 │
│ 4 ┆ 2 │
└───────┴─────────┘


Вот один из способов, который я придумал, просто он кажется немного сложным для этой задачи... есть ли более простой способ?
df.with_columns(((pl.col('group')!=pl.col('group').shift()).cast(pl.Int64).cum_sum()-1).alias('group_i'))


Подробнее здесь: https://stackoverflow.com/questions/749 ... each-group
Ответить

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

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

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

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

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