PySpark中如何将列转为整数并进行聚合统计?
问题解决:将DataFrame列转为整数并执行聚合计数
错误原因分析
你的代码存在两处关键语法错误,导致了Py4J调用异常:
withColumn方法前多了一个冗余的点,破坏了链式调用的语法结构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
相关产品推荐
相关产品推荐

