【问题标题】:get value out of dataframe从数据框中获取价值
【发布时间】:2016-10-29 18:17:33
【问题描述】:

在 Scala 中,我可以使用 get(#) 或 getAs[Type](#) 从数据框中获取值。在pyspark怎么办?

我有一个两列 DataFrame:item(string) 和 salesNum(integers)。我做了一个groupby 和mean 来获得这些数字的平均值,如下所示:

saleDF.groupBy("salesNum").mean()).collect()

它有效。现在我在一个数据框中有了一个平均值。

如何从数据框中获取该值以获取浮点数的平均值?

【问题讨论】:

    标签: python pyspark type-conversion apache-spark-sql


    【解决方案1】:

    collect() 将您的结果作为 python 列表返回。要从列表中取出值,您只需要像这样获取第一个元素:

    saleDF.groupBy("salesNum").mean()).collect()[0] 
    

    【讨论】:

    • 谢谢,对于 RDD,它是一个二维列表,所以我可以使用 [0][0]?
    • 在 ipython 中开发不会让我遍历代码,因此我可以通过查看源代码或类似于 ide 提供的内容来了解​​更多信息。
    【解决方案2】:

    准确地说,collect 返回一个列表,其元素的类型为 class 'pyspark.sql.types.Row'。

    在你的情况下,你应该提取真正的价值:

    saleDF.groupBy("salesNum").mean()).collect()[0]["avg(yourColumnName)"]
    

    其中yourColumnName 是您正在取平均值的列的名称(pyspark,在应用平均值时,默认以这种方式重命名结果列)。

    例如,我运行了以下代码。查看每个步骤的类型和输出。

    >>> columns = ['id', 'dogs', 'cats', 'nation']
    >>> vals = [
    ...      (2, 0, 1, 'italy'),
    ...      (1, 2, 0, 'italy'),
    ...      (3, 4, 0, 'france')
    ... ]
    >>> df = sqlContext.createDataFrame(vals, columns)
    >>> df.groupBy("nation").mean("dogs").collect()
    [Row(nation=u'france', avg(dogs)=4.0), Row(nation=u'italy', avg(dogs)=1.0)]
    >>> df.groupBy("nation").mean("dogs").collect()[0]
    Row(nation=u'france', avg(dogs)=4.0))
    >>> df.groupBy("nation").mean("dogs").collect()[0]["avg(dogs)"]
    4.0
    >>> type(df.groupBy("nation").mean("dogs").collect())
    <type 'list'>
    >>> type(df.groupBy("nation").mean("dogs").collect()[0])
    <class 'pyspark.sql.types.Row'>
    >>> type(df.groupBy("nation").mean("dogs").collect()[0]["avg(dogs)"])
    <type 'float'>
    >>> 
    >>>     
    

    【讨论】:

    【解决方案3】:

    我们也可以在这里使用first()。

    saleDF.groupBy("salesNum").mean()).first()[0]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多