Группировка и вырезание на Lazy DataFrame в PolarsPython

Программы на Python
Ответить
Anonymous
 Группировка и вырезание на Lazy DataFrame в Polars

Сообщение 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.


Подробнее здесь: https://stackoverflow.com/questions/759 ... -in-polars
Ответить

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

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

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

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

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