Polars中将多列合并为单个列表类型列的更优实现方法
有更简洁高效的原生实现,你可以直接用Polars提供的pl.concat_list接口,这一接口就是专门用于按行将多列合并为列表类型的列,不需要额外引入numpy或者自定义map_batches逻辑。
示例代码如下:
# 保留原列,新增combine列 df = df.with_columns( pl.concat_list(["a", "b"]).alias("combine") ) # 如果只需要保留合并后的combine列,可以改成select df = df.select( pl.concat_list(["a", "b"]).alias("combine") )
该实现的优势:
- 纯Polars原生实现,不需要依赖numpy,执行过程会走Polars内置的查询优化,大数据量下性能远高于你现有的numpy+map_batches实现
- 写法简洁易维护,合并多列时只需要传入对应的列名列表即可,不需要自行实现数据拼接逻辑
- 自动适配原列的数据类型,无需额外做类型转换处理
内容的提问来源于stack exchange,提问作者seb2704
相关产品推荐
相关产品推荐

