Я пытаюсь создать симулятор Монте-Карло для своих данных в Polars. Я пытаюсь сгруппировать по столбцу, выполнить повторную выборку групп, а затем распаковать списки агрегации обратно в их исходную последовательность. Я продумал все до последнего шага, но застрял и начинаю думать, что поступил неправильно.
df_original = pl.DataFrame({
'colA': ['A','A','B','B','C','C'],
'colB': [11,12,13,14,15,16],
'colC': [21,22,23,24,25,26]})
shape: (6, 3)
┌──────┬──────┬──────┐
│ colA ┆ colB ┆ colC │
│ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 │
╞══════╪══════╪══════╡
│ A ┆ 11 ┆ 21 │
│ A ┆ 12 ┆ 22 │
│ B ┆ 13 ┆ 23 │
│ B ┆ 14 ┆ 24 │
│ C ┆ 15 ┆ 25 │
│ C ┆ 16 ┆ 26 │
└──────┴──────┴──────┘
Я группирую и меняю выборку следующим образом. Обратите внимание, что здесь я использую начальное значение, поэтому этот пример воспроизводим, но он будет запускаться много-много раз без начальных значений в конце.
df_resampled = (
df_original
.group_by('colA', maintain_order=True)
.agg(pl.all())
.sample(fraction=1.0, shuffle=True, seed=9)
)
shape: (3, 3)
┌──────┬───────────┬───────────┐
│ colA ┆ colB ┆ colC │
│ --- ┆ --- ┆ --- │
│ str ┆ list[i64] ┆ list[i64] │
╞══════╪═══════════╪═══════════╡
│ B ┆ [13, 14] ┆ [23, 24] │
│ C ┆ [15, 16] ┆ [25, 26] │
│ A ┆ [11, 12] ┆ [21, 22] │
└──────┴───────────┴───────────┘
Я не могу понять, как разобрать списки и получить вот это. Исходный порядок внутри каждой группы сохраняется. При каждом заходе перетасовываются только сами группы.
shape: (6, 3)
┌──────┬──────┬──────┐
│ colA ┆ colB ┆ colC │
│ --- ┆ --- ┆ --- │
│ str ┆ i64 ┆ i64 │
╞══════╪══════╪══════╡
│ B ┆ 13 ┆ 23 │
│ B ┆ 14 ┆ 24 │
│ C ┆ 15 ┆ 25 │
│ C ┆ 16 ┆ 26 │
│ A ┆ 11 ┆ 21 │
│ A ┆ 12 ┆ 22 │
└──────┴──────┴──────┘
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-polars
Повторная выборка по группе в Polars ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение