import numpy as np
import polars as pl
def cut(_df):
_c = _df['x'].cut(bins).with_columns([pl.col('x').cast(pl.Int64)])
final = _df.join(_c, left_on='x', right_on='x')
return final
groups = ["A"]*500 + ["B"]*500
bins = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x = np.arange(0,1000)
np.random.shuffle(x)
df = pl.DataFrame({"x":x,"group":groups})
with pl.StringCache():
res = df.groupby("group").apply(cut)
df
Out[4]:
shape: (1_000, 2)
┌─────┬───────┐
│ x ┆ group │
│ --- ┆ --- │
│ i64 ┆ str │
╞═════╪═══════╡
│ 105 ┆ A │
│ 166 ┆ A │
│ 291 ┆ A │
│ 183 ┆ A │
│ … ┆ … │
│ 949 ┆ B │
│ 891 ┆ B │
│ 831 ┆ B │
│ 535 ┆ B │
└─────┴───────┘
res
Out[5]:
shape: (1_000, 4)
┌─────┬───────┬─────────────┬─────────────────┐
│ x ┆ group ┆ break_point ┆ category │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ f64 ┆ cat │
╞═════╪═══════╪═════════════╪═════════════════╡
│ 2 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ 3 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ 4 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ 6 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ … ┆ … ┆ … ┆ … │
│ 991 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
│ 993 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
│ 996 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
│ 997 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
└─────┴───────┴─────────────┴─────────────────┘
Есть ли способ сделать вышеизложенное с ленивым DataFrame Polars без использования Apply или Map?
Моя конечная цель — отсканировать большой CSV-файл, преобразовать его и погрузить с помощью Sink_parquet.
Я получаю следующую ошибку, когда использую карту или Apply для вырезания ленивого кадра данных.
PanicException: sink_parquet not yet supported in standard engine.
Подробнее здесь: https://stackoverflow.com/questions/759 ... -in-polars
Группировка и вырезание на Lazy DataFrame в Polars ⇐ Python
Программы на Python
-
Anonymous
1762273315
Anonymous
import numpy as np
import polars as pl
def cut(_df):
_c = _df['x'].cut(bins).with_columns([pl.col('x').cast(pl.Int64)])
final = _df.join(_c, left_on='x', right_on='x')
return final
groups = ["A"]*500 + ["B"]*500
bins = [0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x = np.arange(0,1000)
np.random.shuffle(x)
df = pl.DataFrame({"x":x,"group":groups})
with pl.StringCache():
res = df.groupby("group").apply(cut)
df
Out[4]:
shape: (1_000, 2)
┌─────┬───────┐
│ x ┆ group │
│ --- ┆ --- │
│ i64 ┆ str │
╞═════╪═══════╡
│ 105 ┆ A │
│ 166 ┆ A │
│ 291 ┆ A │
│ 183 ┆ A │
│ … ┆ … │
│ 949 ┆ B │
│ 891 ┆ B │
│ 831 ┆ B │
│ 535 ┆ B │
└─────┴───────┘
res
Out[5]:
shape: (1_000, 4)
┌─────┬───────┬─────────────┬─────────────────┐
│ x ┆ group ┆ break_point ┆ category │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ f64 ┆ cat │
╞═════╪═══════╪═════════════╪═════════════════╡
│ 2 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ 3 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ 4 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ 6 ┆ B ┆ 100.0 ┆ (0.0, 100.0] │
│ … ┆ … ┆ … ┆ … │
│ 991 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
│ 993 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
│ 996 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
│ 997 ┆ A ┆ 1000.0 ┆ (900.0, 1000.0] │
└─────┴───────┴─────────────┴─────────────────┘
Есть ли способ сделать вышеизложенное с ленивым DataFrame Polars без использования Apply или Map?
Моя конечная цель — отсканировать большой CSV-файл, преобразовать его и погрузить с помощью Sink_parquet.
Я получаю следующую ошибку, когда использую карту или Apply для вырезания ленивого кадра данных.
PanicException: sink_parquet not yet supported in standard engine.
Подробнее здесь: [url]https://stackoverflow.com/questions/75978755/groupby-and-cut-on-a-lazy-dataframe-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антехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия