按结构值对极坐标列表[struct[]]进行排序

问题描述 投票:0回答:1

如何使用

polars.Expr.list.sort
按结构值之一对结构列表进行排序,即

df = pl.DataFrame([{"id": 1, "data": [{"key": "A", "value": 2}, {"key": "B", "value": 1}]}])

我想按

data
字段对
value
进行排序,即结果应该是

df = pl.DataFrame([{"id": 1, "data": [{"key": "B", "value": 1}, {"key": "A", "value": 2}]}])
df.with_columns(pl.col("b").list.sort())

不起作用并且 list.sort 不接受参数?

python python-polars
1个回答
0
投票

您始终可以

Expr.explode()
您的列表,
DataFrame.sort()
DataFrame,然后
GroupBy.agg()
返回结果(假设
id
是行的唯一标识符):

(
    df.explode('data')
    .sort(
        'id',
        pl.col('data').struct.field('value')
    ).group_by('id').agg('data')
)

┌─────┬────────────────────┐
│ id  ┆ data               │
│ --- ┆ ---                │
│ i64 ┆ list[struct[2]]    │
╞═════╪════════════════════╡
│ 1   ┆ [{"B",1}, {"A",2}] │
└─────┴────────────────────┘
© www.soinside.com 2019 - 2024. All rights reserved.