2016-06-23 2 views
9

나는Spark Dataframe의 Row 개체에서 값을 가져 오는 방법은 무엇입니까? <pre><code>averageCount = (wordCountsDF .groupBy().mean()).head() </code></pre> <p></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