2016-06-23 3 views
9

私はSpark DataframeのRowオブジェクトから値を取得する方法は?</p> <pre><code>averageCount = (wordCountsDF .groupBy().mean()).head() </code></pre> <p>ため

Row(avg(count)=1.6666666666666667)

を取得するが、私はしようとすると:

averageCount = (wordCountsDF 
       .groupBy().mean()).head().getFloat(0) 

私は次のエラーを取得する:

AttributeError: getFloat --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in() 1 # TODO: Replace with appropriate code ----> 2 averageCount = (wordCountsDF 3 .groupBy().mean()).head().getFloat(0) 4 5 print averageCount

/databricks/spark/python/pyspark/sql/types.py in getattr(self, item) 1270 raise AttributeError(item) 1271
except ValueError: -> 1272 raise AttributeError(item) 1273 1274 def setattr(self, key, value):

AttributeError: getFloat

は私が間違って何をしているのですか?

答えて

18

私はそれを理解しました。これは私に値を返します:あなたは伝統的なタプルのようなインデックス、それらを使用すると、上記の行った方法を、あなたはおそらくでアクセスしたいことができますしばらくので

averageCount = (wordCountsDF 
       .groupBy().mean()).head()[0] 
1

DATAFRAME行は、(コレクションライブラリーから)namedtuplesから継承されていますそのフィールドの名前。結局、結び付けられたタプルのポイントであり、将来の変更に対してもより堅牢です。このように:

averageCount = wordCountsDF.groupBy().mean().head()['avg(jobs)'] 
7

また、これは動作します:

averageCount = (wordCountsDF 
       .groupBy().mean('count').collect())[0][0] 
print averageCount 
関連する問題

 関連する問題