【问题标题】:How to get a value from the Row object in Spark Dataframe?如何从 Spark Dataframe 中的 Row 对象获取值?
【发布时间】:2016-06-23 18:55:23
【问题描述】:

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

我明白了

行(平均(计数)=1.6666666666666667)

但是当我尝试时:

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

我收到以下错误:

属性错误:getFloat -------------------------------------------------- ------------------------- AttributeError Traceback(最近调用 最后)在() 1 # TODO: 替换为合适的代码 ----> 2 averageCount = (wordCountsDF 3 .groupBy().mean()).head().getFloat(0) 4 5 打印平均数

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

AttributeError: getFloat

我做错了什么?

【问题讨论】:

    标签: apache-spark pyspark spark-dataframe


    【解决方案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)']
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-30
          • 2019-08-09
          • 1970-01-01
          • 1970-01-01
          • 2015-09-06
          • 2019-08-07
          • 2017-02-16
          • 1970-01-01
          相关资源
          最近更新 更多