for
averageCount = (wordCountsDF
.groupBy().mean()).head()
私は得る
Row(avg(count)= 1.6666666666666667)
しかし、私がしようとすると:
averageCount = (wordCountsDF
.groupBy().mean()).head().getFloat(0)
次のエラーが表示されます。
AttributeError:getFloat ----------------------------------------------- ---------------------------- AttributeErrorトレースバック(最後の最後の呼び出し)in()1#TODO:適切なコードで置換--- -> 2 averageCount =(wordCountsDF 3 .groupBy()。mean())。head()。getFloat(0)4 5印刷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
私は何を間違えていますか?
私はそれを考え出した。これは私に値を返します:
averageCount = (wordCountsDF
.groupBy().mean()).head()[0]
これも機能します:
averageCount = (wordCountsDF
.groupBy().mean('count').collect())[0][0]
print averageCount
データフレーム行は、namedtuples(コレクションライブラリから)から継承されるため、上記の方法で従来のTupleのようにインデックスを作成できますが、フィールドの名前でアクセスすることをお勧めします。つまり、結局のところ、名前付きタプルのポイントであり、将来の変更に対してもより堅牢です。このような:
averageCount = wordCountsDF.groupBy().mean().head()['avg(jobs)']