我正在使用pyspark 1.6
和python 2.7
。
我有一个数据框,我希望在一组之后得到另一列的特定列的平均值。
data
是我的数据框
为此我正在做如下
data.registerTempTable('dataframe')
query = 'select mean(Weight) as Weight, b, s from dataframe group by b, s'
df = sqlContext.sql(query)
有没有什么好方法可以达到这个结果。
示例数据如下:
s b Weight
7801 d9b4 0.12911255
7801 6b11 0.128151033
7801 dd1f 0.12791147
7801 c802 0.134295454
7801 1294 0.128722551
7801 4203 0.134276383
7801 accc 0.134290742
7801 aab9 0.129347649
7801 4546 0.126628807
答案 0 :(得分:0)
分组后得到一个意思是非常微不足道的:见pyspark documentation。尝试类似下面的内容,但我相信你在问题中定义的sql也应该接近原样工作。
data.groupBy('b', 's').agg({'Weight': 'mean'})
>>> # [Row(b=u'6b11', s=u'7801', avg(Weight)=0.128151033), ...]