Как получить значение из объекта Row в Spark Dataframe?

для

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

Я получаю

Ряд (ср (количество) = 1,6666666666666667)

но при попытке:

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

Я получаю следующую ошибку:

AttributeError: getFloat -------------------------------------------------- ------------------------- AttributeError Traceback (последний вызов последний) в()       1 # TODO: заменить соответствующим кодом ---- > 2 averageCount = (wordCountsDF       3.groupBy(). Mean()). Head(). GetFloat (0)       4       5 print averageCount

/databricks/spark/python/pyspark/sql/types.py в getattr (self, item) 1270 raise AttributeError (item) 1271
кроме ValueError: → 1272 raise AttributeError (item) 1273 1274 def setattr (self, key, value):

AttributeError: getFloat

Что я делаю неправильно?

Ответ 1

Я понял это. Это вернет мне значение:

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

Ответ 2

Это также работает:

averageCount = (wordCountsDF
                .groupBy().mean('count').collect())[0][0]
print averageCount

Ответ 3

Строки Dataframe наследуются от namedtuples (из библиотеки коллекций), поэтому, хотя вы можете индексировать их как традиционный кортеж так, как вы делали выше, вы, вероятно, захотите получить к нему доступ по имени своих полей. То есть, в конце концов, точка названных кортежей, и она также более надежна для будущих изменений. Вот так:

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