说我有
import duckdb
rel = duckdb.sql('select * from values (1, 4), (1, 5), (2, 6) df(a, b)')
rel
Out[3]:
┌───────┬───────┐
│ a │ b │
│ int32 │ int32 │
├───────┼───────┤
│ 1 │ 4 │
│ 1 │ 5 │
│ 2 │ 6 │
└───────┴───────┘
我可以按 a 分组并通过执行以下操作找到“b”的平均值:
rel.aggregate(
[duckdb.FunctionExpression('mean', duckdb.ColumnExpression('b'))],
group_expr='a',
)
┌─────────┐
│ mean(b) │
│ double │
├─────────┤
│ 4.5 │
│ 6.0 │
└─────────┘
效果非常好
有没有类似的方法来创建“n_unique”聚合?我正在寻找类似的东西
rel.aggregate(
[duckdb.FunctionExpression('count_distinct', duckdb.ColumnExpression('b'))],
group_expr='a',
)
但那并不存在。有什么东西可以做到吗?
已更新。我找不到正确的方法
count distinct
,但你可以使用array_agg()
和array_unique()
函数的组合:旧的。您可以预先选择不同的
a
列b
吗?