Объедините несколько столбцов и строк в структуру Polars (словарь)Python

Программы на Python
Ответить
Anonymous
 Объедините несколько столбцов и строк в структуру Polars (словарь)

Сообщение Anonymous »

Я пытаюсь преобразовать фрейм данных во вложенные/иерархические данные, которые будут записаны в виде строк JSON. Данные структурированы следующим образом:

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

df = pl.DataFrame({
"group_id": ["a", "a", "a", "b", "b", "b"],
"label": ["dog", "cat", "mouse", "dog", "cat", "mouse"],
"indicator": [1, 1, 0, 0, 0, 1]
})
df

┌──────────┬───────┬───────────┐
│ group_id ┆ label ┆ indicator │
│ ---      ┆ ---   ┆ ---       │
│ str      ┆ str   ┆ i64       │
╞══════════╪═══════╪═══════════╡
│ a        ┆ dog   ┆ 1         │
│ a        ┆ cat   ┆ 1         │
│ a        ┆ mouse ┆ 0         │
│ b        ┆ dog   ┆ 0         │
│ b        ┆ cat   ┆ 0         │
│ b        ┆ mouse ┆ 1         │
└──────────┴───────┴───────────┘
Я пытаюсь найти способ объединить столбцы «метка» и «индикатор» в один словарь (структуру) для каждого «group_id», где «метка» — это ключи, а «индикатор» — элементы. Результат должен выглядеть следующим образом:

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

target = pl.DataFrame({
"group_id": ["a", "b"],
"label": [{"dog": 1, "cat": 1, "mouse": 0}, {"dog": 0, "cat": 0, "mouse": 1}],
})
target
┌──────────┬───────────┐
│ group_id ┆ label     │
│ ---      ┆ ---       │
│ str      ┆ struct[3] │
╞══════════╪═══════════╡
│ a        ┆ {1,1,0}   │
│ b        ┆ {0,0,1}   │
└──────────┴───────────┘

target["label"][0]
{'dog': 1, 'cat': 1, 'mouse': 0}

target.write_ndjson()

'{"group_id":"a","label":{"dog":1,"cat":1,"mouse":0}}\n{"group_id":"b","label":{"dog":0,"cat":0,"mouse":1}}\n'
  • Все группы имеют одинаковые метки, одинаковую длину и т. д.
  • Я специально пытаюсь выяснить, можно ли это сделать с полярами, а не с пандами.


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

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

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

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

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

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