如何使用
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 不接受参数?
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}] │
└─────┴────────────────────┘