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

如何实现List(float64)列逐行与最后一行的元素级减法求和?

解决方案

Polars中List类型列不支持直接用算术运算符做元素级运算,要实现每行列表与最后一行列表的元素级减法、取绝对值后求和,需要借助list.eval方法来逐元素处理:

代码实现

import polars as pl

# 假设你的DataFrame为df,包含List[f64]类型的"vec"列
result_df = df.with_columns(
    pl.col("vec")
    # 对列表每个元素,减去最后一行列表对应位置的元素
    .list.eval(pl.element() - pl.col("vec").last().list.get(pl.int_range(0, pl.len())))
    # 对每个差值取绝对值
    .list.abs()
    # 对所有绝对值求和
    .list.sum()
    .alias("sum_abs_diff")
)

逻辑说明

  • list.eval(pl.element() - ...):遍历当前行列表的每个元素,与最后一行列表的对应位置元素做减法
  • pl.col("vec").last().list.get(pl.int_range(0, pl.len())):生成和当前列表长度匹配的索引序列,确保元素位置对齐
  • 后续的list.abs()和list.sum()依次完成取绝对值、求和操作,最终得到每行的目标结果

最后一行的计算结果会是0,符合自身相减后绝对值求和为0的预期。

内容的提问来源于stack exchange,提问作者Seongsu Park

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:20:33