2016-11-07 65 views
0

我使用pyspark 1.6python 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

這實在是太微不足道分組後得到一個平均:看pyspark documentation。嘗試類似下面的內容,儘管我相信你在問題中定義的sql也應該接近於按原樣工作。

data.groupBy('b', 's').agg({'Weight': 'mean'}) 
>>> # [Row(b=u'6b11', s=u'7801', avg(Weight)=0.128151033), ...]