如何从Spark Dataframe中的Row对象获取值?

时间:2016-06-23 18:55:24

标签: apache-spark pyspark spark-dataframe

代表

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

我得到了

  

行(AVG(计数)= 1.6666666666666667)

但是当我尝试时:

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

我收到以下错误:

  

AttributeError:getFloat   -------------------------------------------------- ------------------------- AttributeError Traceback(最近一次调用   最后)in()         1#TODO:替换为适当的代码   ----> 2 averageCount =(wordCountsDF         3 .groupBy()。mean())。head()。getFloat(0)         4         5打印averageCount

      getattr 中的 /databricks/spark/python/pyspark/sql/types.py(self,   item)1270引发AttributeError(item)1271
  除了ValueError:    - > 1272引发AttributeError(item)1273 1274 def setattr (self,key,value):

     

AttributeError:getFloat

我做错了什么?

3 个答案:

答案 0 :(得分:21)

我明白了。这将返回值:

Listbox three

答案 1 :(得分:11)

这也有效:

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

答案 2 :(得分:4)

数据帧行继承自namedtuples(来自集合库),因此虽然您可以像上面那样将传统元组编入索引,但您可能希望通过其字段名称来访问它们。毕竟,这就是命名元组的重点,它对未来的变化也更加健壮。像这样:

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