PySpark中为DataFrame新增行内大于0值计数列报错求助
问题解决:PySpark统计行内大于0值的数量
错误原因
你的代码遍历了df.columns,其中包含字符串类型的Category列,将字符串与数字0进行比较会触发类型不匹配错误。
正确解决方案
只需排除Category列,仅对三个子分类列进行统计:
步骤1:导入依赖模块
from functools import reduce from pyspark.sql import functions as F
步骤2:修改代码统计目标列
# 筛选出所有子分类列(或直接指定列名) subcategory_columns = [col for col in df.columns if col.startswith("Subcategory")] df = df.withColumn( "Count", reduce(add, [F.when(F.col(c) > 0, 1).otherwise(0) for c in subcategory_columns]) )
说明
- 我们只针对
Subcategory 1、Subcategory 2、Subcategory 3这三列做大于0的判断,避免了字符串列的类型冲突。 - 运行后将得到你期望的输出:每行统计出对应子分类中大于0的值的数量,新增为
Count列。
内容的提问来源于stack exchange,提问作者SaurabhShelar
相关产品推荐
相关产品推荐

