簡體   English   中英

除 1 以外的所有列的 Spark groupby 總和

[英]Spark groupby sum for all columns except 1

我有一個 header 的數據集,如下所示:

|State|2020-01-22|2020-01-23|2020-01-24|2020-01-25|2020-01-26|2020-01-27|2020-01-28|

我正在嘗試基於groupBy列和每列的行值總和(列數保持不變)進行State 但是當我使用它時:

from pyspark.sql import SparkSession
import pyspark.sql.functions as F
df = df.groupBy('State').agg(F.sum())

但我收到錯誤: sum() missing 1 required positional argument: 'col'如何獲取每列的行值總和。 我也試過這個:

df = df.groupBy('State').agg(F.sum('2020-01-22','2020-01-23'))

我得到一個錯誤: sum() takes 1 positional argument but 2 were given

感謝你們對我的幫助。

使用列表理解來迭代除石斑魚之外的所有列

 df.groupBy('State').agg(*[sum(i).alias(f"sum_{i}") for i in df.drop('State').columns]).show()

只需注意GroupedData df.groupBy()返回的 GroupedData object 有一個sum方法,當沒有通過 arguments 時,它會匯總所有列:

>>> df.show()
+-----+---+---+
|state|  a|  b|
+-----+---+---+
|    a|  5|  5|
|    a|  6|  6|
|    b| 10| 10|
+-----+---+---+

>>> df.groupBy("state").sum().show()
+-----+------+------+
|state|sum(a)|sum(b)|
+-----+------+------+
|    b|    10|    10|
|    a|    11|    11|
+-----+------+------+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM