2016-10-20 253 views
1

進出口使用的Spark 1.6.2與數據幀彙總數據框中pyspark

,我想

+---------+-------------+-----+-------+-------+-------+-------+--------+ 
|ID  |   P |index|xinf |xup |yinf |ysup |  M | 
+---------+-------------+-----+-------+-------+-------+-------+--------+ 
|  0|10279.9003906| 13| 0.3| 0.5| 2.5| 3.0|540928.0| 
|  2|12024.2998047| 13| 0.3| 0.5| 2.5| 3.0|541278.0| 
|  0|10748.7001953| 13| 0.3| 0.5| 2.5| 3.0|541243.0| 
|  1|  10988.5| 13| 0.3| 0.5| 2.5| 3.0|540917.0| 
+---------+-------------+-----+-------+-------+-------+-------+--------+ 

+---------+-------------+-----+-------+-------+-------+-------+--------+ 
|Id  |   P |index|xinf |xup |yinf |ysup |  M | 
+---------+-------------+-----+-------+-------+-------+-------+--------+ 
|  0|10514.3002929| 13| 0.3| 0.5| 2.5| 3.0|540928.0,541243.0| 
|  2|12024.2998047| 13| 0.3| 0.5| 2.5| 3.0|541278.0| 
|  1|  10988.5| 13| 0.3| 0.5| 2.5| 3.0|540917.0| 
+---------+-------------+-----+-------+-------+-------+-------+--------+ 

所以,我要憑身份證,以減少該數據幀轉換,並計算P行的平均值並連接M行。 但我不會那樣使用spark的函數agg。

你能幫助我請

回答

0

可以groupByID然後彙總每列取決於你需要什麼,meanconcat會幫助你。

from pyspark.sql.functions import first, collect_list, mean 

df.groupBy("ID").agg(mean("P"), first("index"), 
        first("xinf"), first("xup"), 
        first("yinf"), first("ysup"), 
        collect_list("M")) 
+0

我收到未定義的變量:均值,第一和CONCAT,知道從pyspark.sql.functions使用IM導入* – MrGildarts

+0

是的,但仍然沒有工作,我總是收到未解決進口:第一,平均 – MrGildarts

+0

@AlbertoBonsanto'CONCAT '不能用作聚合功能。請糾正這一點。 –