我有这个代码:
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')
给出
shape: (3, 3)
┌───────┬──────┬──────┐
│ label ┆ EU ┆ US │
│ --- ┆ --- ┆ --- │
│ str ┆ f64 ┆ f64 │
╞═══════╪══════╪══════╡
│ AA ┆ 1.5 ┆ null │
│ CC ┆ 18.9 ┆ 43.2 │
│ BB ┆ null ┆ 0.0 │
└───────┴──────┴──────┘
null
现在,当原始数据中有任何值时,我希望数据透视表显示null
在相应的单元格中。但是,AA-EU 显示 1.5(但应该为空),BB-US 显示 0.0(但也应该为空)。
我尝试使用
aggregate_function=lambda col: pl.when(col.has_nulls())\
.then(pl.lit(None, dtype=pl.Float64))\
.otherwise(pl.sum(col))
但会出现错误AttributeError: 'function' object has no attribute '_pyexpr'
。
我该如何修复此问题?
您可以使用 Polars 表达式作为聚合函数: