【问题标题】:Row Sum of a each row in a Dataframe using Pyspark [duplicate]使用Pyspark的数据框中每一行的行总和[重复]
【发布时间】:2021-05-23 08:33:55
【问题描述】:

有一个DF中求行总和的场景如下

ID DEPT [..] SUB1 SUB2 SUB3 SUB4  **SUM1**
1  PHY      50    20   30   30   130
2  COY      52    62   63   34   211
3  DOY      53    52   53   84
4  ROY      56    52   53   74
5  SZY      57    62   73   54

需要为每一行找到SUB1 SUB2 SUB3 SUB4的行总和并作为新列SUM1。 SUB1列在数据框中的序号位置是16。

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:

    您可以使用 Python sum 将列相加:

    import pyspark.sql.functions as F
    
    col_list = ['SUB1', 'SUB2', 'SUB3', 'SUB4']
    # or col_list = df.columns[16:20]
    
    df2 = df.withColumn(
        'SUM1',
        sum([F.col(c) for c in col_list])
    )
    

    【讨论】:

    • 谢谢。有 106 列要求和。它适用于少于 100 列。但是对于超过 100 列,它显示以下错误 org.apache.spark.sql.catalyst.errors.package$TreeNodeException:达到最大迭代次数 (100)批量解析,请设置'spark.sql.analyzer.maxIterations'到更大的值。,树:
    • 试试这个 spark.sql.optimizer.maxIterations 100 ?
    • 可以将其设置为更大的值,例如200/1000 。使用spark.sql("set spark.sql.analyzer.maxIterations = 200")
    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    相关资源
    最近更新 更多