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

Polars无符号列算术运算溢出规避与表达式类型转换(不修改源列)问题咨询

Polars无符号列算术运算溢出规避与表达式类型转换(不修改源列)问题咨询

是否可以在不转换源列数据类型的前提下,将表达式计算结果转换为特定的数据类型?

先看下面这个示例DataFrame:

import polars as pl

df = pl.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}, schema={'A': pl.UInt8, 'B': pl.UInt8})

输出结果:

┌─────┬─────┐
│ A   ┆ B   │
│ --- ┆ --- │
│ u8  ┆ u8  │
╞═════╪═════╡
│ 1   ┆ 4   │
│ 2   ┆ 5   │
│ 3   ┆ 6   │
└─────┴─────┘

现在执行如下表达式:

df = df.with_columns((pl.col("A") - pl.col("B")).alias("C"))

得到的结果是:

┌─────┬─────┬─────┐
│ A   ┆ B   ┆ C   │
│ --- ┆ --- ┆ --- │
│ u8  ┆ u8  ┆ u8  │
╞═════╪═════╪═════╡
│ 1   ┆ 4   ┆ 253 │
│ 2   ┆ 5   ┆ 253 │
│ 3   ┆ 6   ┆ 253 │
└─────┴─────┴─────┘

从计算机科学的角度来说这个结果是正确的,但实际使用中完全不符合预期。我只能通过先把"A"和"B"转换为有符号整数来解决这个问题吗?有没有更简洁的处理方式?

备注:内容来源于stack exchange,提问作者misantroop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 16:34:36