Eu tenho este código:
import polars as pl
pl.DataFrame({
'label': ['AA', 'CC', 'BB', 'AA', 'CC'],
'account': ['EU', 'US', 'US', 'EU', 'EU'],
'qty': [1.5, 43.2, None, None, 18.9]})\
.pivot('account', index='label', aggregate_function='sum')
o que dá
shape: (3, 3)
┌───────┬──────┬──────┐
│ label ┆ EU ┆ US │
│ --- ┆ --- ┆ --- │
│ str ┆ f64 ┆ f64 │
╞═══════╪══════╪══════╡
│ AA ┆ 1.5 ┆ null │
│ CC ┆ 18.9 ┆ 43.2 │
│ BB ┆ null ┆ 0.0 │
└───────┴──────┴──────┘
Agora, quando houver null
valores nos dados originais, quero que a tabela dinâmica seja exibida null
na célula respectiva. No entanto, AA-EU mostra 1,5 (mas deve ser nulo), e BB-US mostra 0,0 (mas também deve ser nulo).
Eu tentei usar
aggregate_function=lambda col: pl.when(col.has_nulls())\
.then(pl.lit(None, dtype=pl.Float64))\
.otherwise(pl.sum(col))
mas dá erro com AttributeError: 'function' object has no attribute '_pyexpr'
.
Como posso consertar isso?
Você pode usar uma expressão Polars como uma função de agregação: