You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Polars如何基于列表中的列名对指定列求和生成新列

Polars 对列表存储的多列批量求和生成新列

当待求和的列名统一存储在列表中时,不需要手动逐列写相加表达式,可直接用Polars内置的横向求和方法实现,也支持自定义表达式累加的写法,具体如下:

  • 方法1:使用内置pl.sum_horizontal()(推荐)
    这个方法是Polars专门为行级横向求和设计的,直接传入列名列表即可,代码最简洁:

    import polars as pl
    
    # 构造示例数据
    df = pl.DataFrame({
        "col1": [1, 2, 3],
        "col2": [4, 5, 6],
        "col3": [7, 8, None]
    })
    # 待求和的列名列表
    target_cols = ["col1", "col2", "col3"]
    
    # 横向求和生成新列,默认自动跳过空值
    df = df.with_columns(
        pl.sum_horizontal(target_cols).alias("new_colname")
    )
    

    如果要求所有待求和列都非空才返回求和结果,只要加ignore_nulls=False参数即可:

    pl.sum_horizontal(target_cols, ignore_nulls=False).alias("new_colname")
    
  • 方法2:表达式累加(适合需要自定义运算逻辑的场景)
    如果除了简单求和还需要叠加其他计算逻辑,可以把列表内的列名批量转为pl.col对象,用Python内置sum函数累加表达式:

    df = df.with_columns(
        sum(pl.col(c) for c in target_cols).alias("new_colname")
    )
    

注意:你给出的示例代码存在括号位置错误,别名.alias()需要包裹整个求和表达式,而不是只加在最后一个列对象上,否则别名只会绑定到最后一列,求和逻辑会不符合预期。错误写法:pl.col('colname1') + pl.col('colname2').alias('new_colname'),正确写法:(pl.col('colname1') + pl.col('colname2')).alias('new_colname')

内容的提问来源于stack exchange,提问作者Glenn Pierce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:33:39