Как сгладить/разделить кортеж массивов и вычислить средние значения столбцов в кадре данных Polars?Python

Программы на Python
Anonymous
Как сгладить/разделить кортеж массивов и вычислить средние значения столбцов в кадре данных Polars?

Сообщение Anonymous »

У меня есть следующий фрейм данных:

Код: Выделить всё

df = pl.DataFrame(
{"a": [([1, 2, 3], [2, 3, 4], [6, 7, 8]), ([1, 2, 3], [3, 4, 5], [5, 7, 9])]}
)
По сути, каждая ячейка представляет собой кортеж из трех массивов одинаковой длины. Я хочу полностью разделить их на отдельные столбцы (один скаляр находится в одном столбце), как показано ниже:

Код: Выделить всё

shape: (2, 9)
┌─────────┬─────────┬─────────┬─────────┬─────┬─────────┬─────────┬─────────┬─────────┐
│ field_0 ┆ field_1 ┆ field_2 ┆ field_3 ┆ ... ┆ field_5 ┆ field_6 ┆ field_7 ┆ field_8 │
│ ---     ┆ ---     ┆ ---     ┆ ---     ┆     ┆ ---     ┆ ---     ┆ ---     ┆ ---     │
│ i64     ┆ i64     ┆ i64     ┆ i64     ┆     ┆ i64     ┆ i64     ┆ i64     ┆ i64     │
╞═════════╪═════════╪═════════╪═════════╪═════╪═════════╪═════════╪═════════╪═════════╡
│ 1       ┆ 2       ┆ 3       ┆ 2       ┆ ... ┆ 4       ┆ 6       ┆ 7       ┆ 8       │
│ 1       ┆ 2       ┆ 3       ┆ 3       ┆ ... ┆ 5       ┆ 5       ┆ 7       ┆ 9       │
└─────────┴─────────┴─────────┴─────────┴─────┴─────────┴─────────┴─────────┴─────────┘
Я попробовал один из способов — использовать list.to_struct и unnest два раза, чтобы полностью сгладить два вложенных уровня. Два уровня здесь — это нормально, но если есть множество вложенных уровней и их количество невозможно определить заранее, код будет очень длинным.
Есть ли что-нибудь более простое (или более систематичное) ) способ добиться этого?

Подробнее здесь: https://stackoverflow.com/questions/755 ... olars-data

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