如何在Polars链式调用的with_columns中引用DataFrame.height?
在Polars链式调用中动态生成对应行数的随机列
当然可以,以下两种方案都能在单个链式表达式中实现,无需中断调用链:
方案1:Polars原生表达式(推荐)
利用pl.count()动态获取总行数,结合numpy随机函数生成对应长度的列,全程在Polars表达式上下文内完成:
import polars as pl import datetime df = (pl .DataFrame(dict( j=pl.datetime_range(datetime.date(2023, 1, 1), datetime.date(2023, 1, 3), '4h', closed='left', eager=True), )) .with_columns( k=pl.numpy.random.randint(10, 99, size=pl.count()).alias('k') ) ) print(df)
无论时间间隔如何修改,pl.count()会自动适配当前DataFrame的行数,彻底避免硬编码数值的问题。
方案2:通过map_batches直接访问DataFrame高度
如果需要直接引用height属性,可借助map_batches访问当前DataFrame的元数据:
import polars as pl import datetime df = (pl .DataFrame(dict( j=pl.datetime_range(datetime.date(2023, 1, 1), datetime.date(2023, 1, 3), '4h', closed='left', eager=True), )) .map_batches(lambda df: df.with_columns(k=pl.lit(pl.numpy.random.randint(10, 99, df.height)))) ) print(df)
内容的提问来源于stack exchange,提问作者levant pied
相关产品推荐
相关产品推荐

