Я пытаюсь создать симулятор Монте-Карло для своих данных в 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
Программы на Python
1731708191
Anonymous
Я пытаюсь создать симулятор Монте-Карло для своих данных в 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 │
└──────┴──────┴──────┘
Подробнее здесь: [url]https://stackoverflow.com/questions/79190321/resampling-by-group-in-polars[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия