Поляры делают все группы одинакового размера.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Поляры делают все группы одинакового размера.

Сообщение Anonymous »

Вопрос
Я пытаюсь сделать так, чтобы все группы для данного фрейма данных имели одинаковый размер. В Отправной точке ниже я показываю пример фрейма данных, который я хочу преобразовать. В разделе Цель я пытаюсь продемонстрировать, чего пытаюсь достичь. Я хочу сгруппировать по группе столбцов, сделать все группы размером 4 и заполнить «отсутствующие» значения нулевыми значениями — надеюсь, это понятно.
Я пробовал несколько подходов, но не смог понять этот.
Отправная точка
< pre class="lang-py Prettyprint-override">dfa = pl.DataFrame(data={'group': ['a', 'a', 'a', 'b', 'b', 'c'],
'value': ['a1', 'a2', 'a3', 'b1', 'b2', 'c1']})
┌───────┬───────┐
│ group ┆ value │
│ --- ┆ --- │
│ str ┆ str │
╞═══════╪═══════╡
│ a ┆ a1 │
│ a ┆ a2 │
│ a ┆ a3 │
│ b ┆ b1 │
│ b ┆ b2 │
│ c ┆ c1 │
└───────┴───────┘

Цель
>>> make_groups_uniform(dfa, group_by='group', group_size=4)
┌───────┬───────┐
│ group ┆ value │
│ --- ┆ --- │
│ str ┆ str │
╞═══════╪═══════╡
│ a ┆ a1 │
│ a ┆ a2 │
│ a ┆ a3 │
│ a ┆ null │
│ b ┆ b1 │
│ b ┆ b2 │
│ b ┆ null │
│ b ┆ null │
│ c ┆ c1 │
│ c ┆ null │
│ c ┆ null │
│ c ┆ null │
└───────┴───────┘

Версия пакета
polars: 1.1.0
Решение
Я основал это на ответе @jqurious ниже.
>>> import polars as pl

>>> dfa = pl.DataFrame(data={'group': ['a', 'a', 'a', 'b', 'b', 'c'],
... 'value': ['a1', 'a2', 'a3', 'b1', 'b2', 'c1']})

┌───────┬───────┐
│ group ┆ value │
│ --- ┆ --- │
│ str ┆ str │
╞═══════╪═══════╡
│ a ┆ a1 │
│ a ┆ a2 │
│ a ┆ a3 │
│ b ┆ b1 │
│ b ┆ b2 │
│ c ┆ c1 │
└───────┴───────┘

>>> (dfa
... .with_columns(group_size=pl.col('group')
... .count()
... .over('group')
... .max()
... .explode())
... .group_by('group', maintain_order=True)
... .agg(pl.all()
... .append(pl.repeat(None, pl.col('group_size') - pl.len())))
... .select(pl.exclude('group_size'))
... .explode(pl.exclude('group')))

┌───────┬───────┐
│ group ┆ value │
│ --- ┆ --- │
│ str ┆ str │
╞═══════╪═══════╡
│ a ┆ a1 │
│ a ┆ a2 │
│ a ┆ a3 │
│ b ┆ b1 │
│ b ┆ b2 │
│ b ┆ null │
│ c ┆ c1 │
│ c ┆ null │
│ c ┆ null │
└───────┴───────┘


Подробнее здесь: https://stackoverflow.com/questions/789 ... -same-size
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Поляры делают все группы одинакового размера.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Поляры делают все группы одинакового размера.
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Поляры делают все группы одинакового размера.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Поляры делают все группы одинакового размера.
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Поляры делают все группы одинакового размера.
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

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