【问题标题】:Accessing count column in PySpark访问 PySpark 中的计数列
【发布时间】:2016-11-17 17:52:01
【问题描述】:
code:

mydf = testDF.groupBy(testDF.word).count()
mydf.show()

output:

+-----------+-----+
|       word|count|
+-----------+-----+
|        she| 2208|
|    mothers|   93|
|       poet|   59|
|     moving|   18|
|     active|    6|
|       foot|  169|

我想根据字数降序排列这个数据框。

code:

countDF = mydf.orderBy(mydf.count.desc())
countDF.show()

Error:

AttributeError: 'function' object has no attribute 'desc'

请让我知道我哪里出错了。

【问题讨论】:

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


【解决方案1】:

嗯,点表示法不是访问列的最佳方法。虽然DataFrame 提供了列感知__getattr__,但您可能会遇到像这样的冲突,其中名称将解析为方法(此处为DataFrame.count),因此最好使用括号表示法:

mydf.orderBy(mydf["count"].desc())

col函数:

from pyspark.sql.functions import col

mydf.orderBy(col("count").desc())

引用列。

【讨论】:

  • 还有一个选项,mydf.sort(-col("count"))
  • @AlbertoBonsanto desc("count") 也是如此。 desc 方法更通用,因为不需要支持 - 的类型。不过,我认为这更多是关于 getattr 机制而不是排序本身。
猜你喜欢
  • 2021-11-05
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2019-06-09
  • 1970-01-01
相关资源
最近更新 更多