首页 文章

PySpark Pandas:Groupby识别列并汇总两个不同的列以创建新的2x2表

提问于
浏览
0

我有以下示例数据集:

groupby prevoius    current
A       1           1
A       0           1
A       0           0
A       1           0
A       1           1
A       0           1

我想通过汇总“previous”和“current”列来创建下表 .

previous_total   current_total
3                4

我尝试了.byg的所有组合组合并试图实现上面的表格,但是无法获得任何成功运行的东西 .

我也知道如何在Python Pandas中执行此操作,但不知道Pyspark .

2 回答

  • 1

    你可以使用和 sum

    from pyspark.sql.functions import sum
    
    df_result = df.select(sum("previous").alias("previous_total"),
                          sum("current").alias("current_total"))
    
    df_result.show()
    
    +--------------+--------------+
    |previous_total|current_total)|
    +--------------+--------------+
    |             3|             4|
    +--------------+--------------+
    
  • 0

    使用 sumgroupBy 方法:

    >>> df.groupBy().sum().select(col("sum(previous)").alias("previous_total"), col("sum(current)").alias("current_total")).show()
    +--------------+--------------+
    |previous_total|current_total)|
    +--------------+--------------+
    |             3|             4|
    +--------------+--------------+
    

    此外,您可以将数据帧注册为临时表,并使用Spark SQL进行查询,这将得到相同的结果:

    >>> df.registerTempTable("df")
    >>> spark.sql("select sum(previous) as previous_total, sum(current) as current_total from df").show()
    

相关问题