PySpark:Groupby标识列并对两个不同的列求和以创建新的2x2选项卡

2024-09-26 17:56:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下示例数据集:

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

我想通过对“前一列”和“当前列”求和来创建下表

previous_total   current_total
3                4

我尝试了groupby与.agg和的所有组合,试图实现上面的表,但未能成功运行任何东西

我也知道如何在Python中实现这一点,但不知道Pyspark


Tags: 数据示例currentaggpysparktotalgroupbyprevious
2条回答

使用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()

您可以使用和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|
+       +       +

相关问题 更多 >

    热门问题