簡體   English   中英

PySpark:在具有多個功能的多個列上進行分組

[英]PySpark: Groupby on multiple columns with multiple functions

我正在運行帶有Spark 2.0的PySpark來聚合數據。 以下是Spark中收到的原始數據幀(df)。

DeviceID    TimeStamp           IL1    IL2    IL3    VL1    VL2    VL3
1001        2019-07-14 00:45    2.1    3.1   2.25    235    258    122
1002        2019-07-14 01:15    3.2    2.4   4.25    240    250    192
1003        2019-07-14 01:30    3.2    2.0   3.85    245    215    192
1003        2019-07-14 01:30    3.9    2.8   4.25    240    250    192

現在,我想通過DeviceID應用groupby邏輯。 StackOverflow中有幾篇文章。 特別是, 鏈接與鏈接很有趣。 在這些帖子的幫助下,我創建了以下腳本

from pyspark.sql import functions as F
groupby = ["DeviceID"]
agg_cv = ["IL1","IL2","IL3","VL1","VL2","VL3"]
func = [min,max]
expr_cv = [F.f(F.col(c)) for f in func for c in agg_cv]
df_final = df_cv_filt.groupby(*groupby).agg(*expr_cv)

上面的代碼顯示錯誤為

Columns are not iterable 

無法理解為什么會出現此類錯誤。 當我使用以下代碼時

from pyspark.sql.functions import min, max, col
expr_cv = [f(col(c)) for f in func for c in agg_cv]

然后上面的代碼運行正常。

我的問題是:如何解決上述錯誤。

試試看

func = [F.min,F.max]
agg_cv = ["IL1","IL2","IL3","VL1","VL2","VL3"]
expr_cv = [f(F.col(c)) for f in func for c in agg_cv]
df_final = df1.groupby(*groupby).agg(*expr_cv)

這應該工作。

+--------+---------+--------+--------+--------+--------+--------+---------+--------+--------+--------+--------+--------+
|DeviceID|min( IL1)|min(IL2)|min(IL3)|min(VL1)|min(VL2)|min(VL3)|max( IL1)|max(IL2)|max(IL3)|max(VL1)|max(VL2)|max(VL3)|
+--------+---------+--------+--------+--------+--------+--------+---------+--------+--------+--------+--------+--------+
|    1003|      3.2|     2.0|    3.85|     240|     215|     192|      3.9|     2.8|    4.25|     245|     250|     192|
|    1002|      3.2|     2.4|    4.25|     240|     250|     192|      3.2|     2.4|    4.25|     240|     250|     192|
|    1001|      2.1|     3.1|    2.25|     235|     258|     122|      2.1|     3.1|    2.25|     235|     258|     122|
+--------+---------+--------+--------+--------+--------+--------+---------+--------+--------+--------+--------+--------+```

暫無
暫無

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

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