for
averageCount = (wordCountsDF
.groupBy().mean()).head()
Je reçois
Ligne (moyenne (nombre) = 1,6666666666666667)
mais quand j'essaye:
averageCount = (wordCountsDF
.groupBy().mean()).head().getFloat(0)
J'obtiens l'erreur suivante:
AttributeError: getFloat ----------------------------------------------- ---------------------------- AttributeError Traceback (dernier appel le plus récent) dans () 1 # TODO: Remplacer par le code approprié --- -> 2 averageCount = (wordCountsDF 3 .groupBy (). Mean ()). Head (). GetFloat (0) 4 5 print averageCount
/databricks/spark/python/pyspark/sql/types.py dans getattr (self, item) 1270 augmenter AttributeError (item) 1271
sauf ValueError: -> 1272 augmenter AttributeError (item) 1273 1274 def setattr (self, key, value):AttributeError: getFloat
Qu'est-ce que je fais mal?
Je l'ai compris. Cela me rendra la valeur:
averageCount = (wordCountsDF
.groupBy().mean()).head()[0]
Cela fonctionne également:
averageCount = (wordCountsDF
.groupBy().mean('count').collect())[0][0]
print averageCount
Les lignes de trame de données sont héritées des éléments nommés (de la bibliothèque des collections), donc bien que vous puissiez les indexer comme un Tuple traditionnel comme vous l'avez fait ci-dessus, vous voudrez probablement y accéder par le nom de ses champs. C'est, après tout, l'intérêt des tuples nommés, et il est également plus robuste aux changements futurs. Comme ça:
averageCount = wordCountsDF.groupBy().mean().head()['avg(jobs)']