Код: Выделить всё
{
"value": "A",
"lineItemName": "value",
"dimensions": [
{
"itemCode": 1,
"dimensionName": "Clients"
}
]
}
ключевом столбце в строке этого элемента, а DimensionName — заданному литералу.
Например
Код: Выделить всё
df = pl.DataFrame({"key": [1, 2, 3, 4, 5], "value": ["A", "B", "C", "D", "E"]})
Код: Выделить всё
shape: (5, 1)
╭─────────────────────────╮
│ value │
│ --- │
│ struct[3] │
╞═════════════════════════╡
│ {"A","value",[{1,"D"}]} │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {"B","value",[{2,"D"}]} │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {"C","value",[{3,"D"}]} │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {"D","value",[{4,"D"}]} │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ {"E","value",[{5,"D"}]} │
╰─────────────────────────╯

Моя текущая реализация:
Код: Выделить всё
df = df.with_columns(
pl.struct(
pl.col(col).alias("value"),
pl.lit(col).alias("lineItemName"),
pl.concat_list(
pl.struct(pl.col("key").alias("itemCode"), pl.lit("D").alias("dimensionName"))
).alias("dimensions"),
).alias(col)
for col in df.columns
if not col == "key"
).drop("key")
всегда содержит только один элемент. Вот почему я ищу способ избежать значительного (и в моем случае
ненужного) снижения производительности pl.concat_list().
В идеале я мог бы просто:
Код: Выделить всё
pl.lit(
[pl.struct(pl.col("key").alias("itemCode"), pl.lit("D").alias("dimensionName"))]
).alias("dimensions")
Я пробовал варианты вышеизложенного, но, похоже, в какой-то момент я не могу избежать столкновения с вложенным выражением. Есть ли
есть ли какой-нибудь способ чисто создать экземпляр этого списка отдельных элементов или, что еще лучше, массива?
Подробнее здесь: https://stackoverflow.com/questions/794 ... fficiently
Мобильная версия