@@ -215,7 +215,7 @@ def aggregate(cls, dataset, dimensions, function, **kwargs):
215
215
cols = [d .name for d in dataset .kdims if d in dimensions ]
216
216
vdims = dataset .dimensions ("value" , label = "name" )
217
217
reindexed = cls .dframe (dataset , dimensions = cols + vdims )
218
- expr = getattr (nw .col ( "*" ), _AGG_FUNC_LOOKUP .get (function , function ))()
218
+ expr = getattr (nw .all ( ), _AGG_FUNC_LOOKUP .get (function , function ))()
219
219
if len (dimensions ):
220
220
columns = reindexed .collect_schema ()
221
221
if function in [np .size ]:
@@ -226,7 +226,8 @@ def aggregate(cls, dataset, dimensions, function, **kwargs):
226
226
for k , v in columns .items ()
227
227
if isinstance (v , nw .dtypes .NumericType )
228
228
]
229
- grouped = reindexed .select (numeric_cols + cols ).groupby (cols )
229
+ all_cols = list (set (numeric_cols ) | set (cols ))
230
+ grouped = reindexed .select (all_cols ).group_by (cols )
230
231
df = grouped .agg (expr , ** kwargs )
231
232
else :
232
233
df = reindexed .select (expr , ** kwargs )
@@ -245,11 +246,11 @@ def unpack_scalar(cls, dataset, data):
245
246
246
247
"""
247
248
cols = data .collect_schema ()
248
- if len (cols ) > 1 :
249
+ if len (cols ) != 1 :
249
250
return data
250
251
is_lazy = isinstance (data , nw .LazyFrame )
251
- size = data .select (nw .col (cols [ 0 ] ).len ())
252
- size = size .collect () if is_lazy else size
252
+ size = data .select (nw .col (next ( iter ( cols )) ).len ())
253
+ size = ( size .collect () if is_lazy else size ). item ()
253
254
if size != 1 :
254
255
return data
255
256
return (data .collect () if is_lazy else data ).item ()
0 commit comments