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
相关产品推荐
相关产品推荐

