Как отменить вложение нескольких столбцов структуры в Polars, используя суффикс, устраняющий неоднозначность, чтобы избеPython

Программы на Python
Ответить
Anonymous
 Как отменить вложение нескольких столбцов структуры в Polars, используя суффикс, устраняющий неоднозначность, чтобы избе

Сообщение Anonymous »

У меня есть 2 столбца с похожими структурами (одинаковые имена полей, типы полей и т. д.).

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

import polars as pl

nest = pl.DataFrame({
'a':[{'x':1,'y':10},{'x':2,'y':20},],
'b':[{'x':3,'y':30},{'x':4,'y':40},]
})

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

shape: (2, 2)
┌───────────┬───────────┐
│ a         ┆ b         │
│ ---       ┆ ---       │
│ struct[2] ┆ struct[2] │
╞═══════════╪═══════════╡
│ {1,10}    ┆ {3,30}    │
│ {2,20}    ┆ {4,40}    │
└───────────┴───────────┘

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

print(nest.schema)
# Schema([('a', Struct({'x': Int64, 'y': Int64})),
#         ('b', Struct({'x': Int64, 'y': Int64}))])
Я хочу отменить вложение обоих этих столбцов и получить плоский фрейм данных с суффиксами к полям, чтобы устранить неоднозначность:

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

shape: (2, 4)
┌─────┬─────┬─────┬─────┐
│ x_a ┆ y_a ┆ x_b ┆ y_b │
│ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ i64 ┆ i64 │
╞═════╪═════╪═════╪═════╡
│ 1   ┆ 10  ┆ 3   ┆ 30  │
│ 2   ┆ 20  ┆ 4   ┆ 40  │
└─────┴─────┴─────┴─────┘
Я пробовал:

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

nest.unnest('a','b')
# DuplicateError: could not create a new DataFrame: column with name 'x' has more than one occurrence
но (конечно) получил DuplicationError для имен x и y.
В идеале что-то, что будет рекурсивно сглаживать и устранять неоднозначность имен, используя пути к полям :-(

Подробнее здесь: https://stackoverflow.com/questions/767 ... -suffix-to
Ответить

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

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

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

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

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