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

Pyspark中如何让累加求和的计算结果保持为整数类型

PySpark累加求和结果保留整数解决方案

问题原因

  • 操作对象不匹配:累加计算的结果存储在df变量中,你后续类型转换操作的是原始datamonthly表,并未对计算后的结果表生效
  • 依赖未导入:IntegerType属于pyspark.sql.types下的类,未提前导入会导致类型转换逻辑失效
  • 代码逻辑顺序错误:类型转换操作需在累加计算完成后,对存储了计算结果的DataFrame执行

解决方法

方法1:累加计算后单独转换类型

先导入对应类型依赖,再对计算后的结果表执行类型转换:

import sys
import pyspark.sql.functions as F
from pyspark.sql.window import Window
from pyspark.sql.types import IntegerType

# 执行累加计算
df = df.withColumn('last_x_month', F.sum(datamonthly.ix).over(Window.partitionBy().orderBy().rowsBetween(-sys.maxsize, 0)))
# 对结果列做整型转换
df = df.withColumn("last_x_month", F.col("last_x_month").cast(IntegerType()))

方法2:累加计算时直接转换类型

在sum函数计算完成后直接嵌套cast操作,代码更简洁:

import sys
import pyspark.sql.functions as F
from pyspark.sql.window import Window
from pyspark.sql.types import IntegerType

df = df.withColumn('last_x_month', 
                   F.sum(datamonthly.ix).over(Window.partitionBy().orderBy().rowsBetween(-sys.maxsize, 0)).cast(IntegerType())
                  )

两种方案执行后输出的last_x_month列就会是整型格式,符合预期输出要求。


内容的提问来源于stack exchange,提问作者Nabih Bawazir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:15:04