Пользовательское декодирование двоичных данных в полярахPython

Программы на Python
Anonymous
Пользовательское декодирование двоичных данных в полярах

Сообщение Anonymous »

при работе с двоичными данными я использую специальную функцию для их декодирования. Это требует использования apply в полярах. Из-за поэлементной обработки в этом случае время расчета значительно увеличивается при работе с большими наборами данных.
Я пытался привести двоичные данные к List(UInt8), но это еще не реализовано.
exceptions.ArrowErrorException: NotYetImplemented("Casting from LargeBinary to LargeList(Field { name: \"item\", data_type: UInt8, is_nullable: true, metadata: {} }) not supported")

Есть ли более эффективный способ сделать это?
import polars as pl
import struct
import io

data = {"binary": [b'\xFD\x00\xFE\x00\xFF\x00',b'\x10\x00\x20\x00\x30\x00'], "id": [1,2]}
schema = {"binary": pl.Binary, "id":pl.Int16}

df = pl.DataFrame(data, schema)

Это возвращает:
shape: (2, 2)
┌───────────────┬─────┐
│ binary ┆ id │
│ --- ┆ --- │
│ binary ┆ i16 │
╞═══════════════╪═════╡
│ [binary data] ┆ 1 │
│ [binary data] ┆ 2 │
└───────────────┴─────┘

Теперь, когда мы применим нашу функцию для декодирования двоичного столбца:
def custom_decode(data):
bytestream = io.BytesIO(data)
lst = []

while bytestream.tell() < 6:
lst.append(struct.unpack('

Подробнее здесь: https://stackoverflow.com/questions/763 ... -in-polars

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