2016-10-20 208 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 '不能用作聚合功能。请纠正这一点。 –