agg(count) 不起作用

问题描述 投票:0回答:1

尝试使用聚合在 Apache Spark (PySpark) 中执行聚合我的数据帧。

+----+---+---+
|name|age| id|
+----+---+---+
|Mark|  4|  1|
|Mark|  4|  2|
|Mark|  5|  3|
|Mark|  5|  4|
|Mark|  5|  5|
|Mark|  6|  6|
|Mark|  8|  7|
+----+---+---+

我有以下代码,可以为我提供一行的不同记录计数:

old_table.groupby('name').agg(countDistinct('age'))

我尝试添加正常计数作为聚合的另一个输出,但它引发错误:

old_table.groupby('name').agg(countDistinct('age'), count('age))

错误:

NameError: name 'count' is not defined

有什么方法可以将计数添加到输出的非重复计数中,这样我将得到如下所示的输出表?

+----+-------------+-----+
|name|countDistinct|count|
+----+-------------+-----+
|Mark|            4|    7|
+----+-------------+-----+
apache-spark pyspark
1个回答
5
投票

您正在使用内置函数“count”,它需要一个可迭代对象,而不是列名。

您需要从

pyspark.sql.functions

显式导入同名的“count”函数
from pyspark.sql.functions import count as _count

old_table.groupby('name').agg(countDistinct('age'), _count('age'))
© www.soinside.com 2019 - 2024. All rights reserved.