当计算列表元素时,我想知道并使用当前索引。是否已经有一种方法可以做到?
比如pl.element().idx()
?
import polars as pl
data = {"a": [[1,2,3],[4,5,6]]}
schema = {"a": pl.List(pl.Int8)}
df = pl.DataFrame(data, schema=schema).with_columns([
pl.col("a").list.eval(pl.element() * pl.element().idx() )
])
字符串
预期结果:
+-------------+
¦ a ¦
¦ --- ¦
¦ list[u8] ¦
¦-------------¦
¦ [0, 2, 6] ¦
¦ [0, 5, 12] ¦
+-------------+
型
3条答案
按热度按时间waxmsbnn1#
您可以使用
apply
方法沿着使用enumerate
函数来实现访问列表列中每个元素的当前索引的预期结果。下面是一个如何实现的示例:字符串
输出
型
ef1yzkbh2#
使用
pl.element().cum_count()
可以很容易地访问列表中元素的索引,如下所示:字符串
输出。
型
iibxawm43#
最好的方法(据我所知)是创建一个行索引,爆炸,使用cumcount和一个窗口函数来创建idx(我称之为j),然后用groupby/agg把它放回一起
字符串