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

PySpark中如何将列转为整数并进行聚合统计?

问题解决:将DataFrame列转为整数并执行聚合计数

错误原因分析

你的代码存在两处关键语法错误,导致了Py4J调用异常:

  1. withColumn方法前多了一个冗余的点,破坏了链式调用的语法结构
  2. when函数的括号使用错误,正确语法应为when(判断条件, 满足条件时的值),你错误地将闭合括号放在条件之后,导致解析逻辑混乱

修正后的代码示例

from pyspark.sql.functions import col, sum, when

# 转换列类型并执行聚合计数
processed_df = df.withColumn("string_code_int", col("string_code").cast("int")) \
                 .agg(
                     sum(when(col("string_code_int") >= 1000, 1).otherwise(0)).alias("count")
                 )

补充说明

  • 转换列类型时,需确保string_code列的所有字符串值都能合法转换为整数,否则转换失败的行会生成null值,这些行在后续聚合中会被sum忽略
  • 如果需要处理转换失败的null值(比如将其计入非符合条件的行),可以修改when表达式:
    sum(when(col("string_code_int").isNotNull() & (col("string_code_int") >= 1000), 1).otherwise(0)).alias("count")
    

内容的提问来源于stack exchange,提问作者Song Hwang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:23:21