Python Pyspark-groupby([col list]).agg(count([col list))

Python Pyspark-groupby([col list]).agg(count([col list)),python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我怎样才能做到这一点 from pyspark.sql import functions as F from pyspark.context import SparkContext from pyspark.sql.session import SparkSession sc = SparkContext('local') spark = SparkSession(sc) grouped=df.groupby([col list]).agg(F.count([col list])) 我读过st

我怎样才能做到这一点

from pyspark.sql import functions as F
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
sc = SparkContext('local')
spark = SparkSession(sc)
grouped=df.groupby([col list]).agg(F.count([col list]))
我读过stackoverflow上类似的问题,但找不到确切的答案

即使我试着放一列

grouped=dfn.groupby('col name').agg(F.count('col name'))
我明白了-

py4j\java_collections.py”,第500行,转换格式 对于对象中的元素: TypeError:“type”对象不可编辑

提及问题-


我事先不知道列名,需要通过agg函数向组提供列表作为输入。

您只需在
GroupedData
对象上使用
.count()
方法即可

让我们准备一些数据(我假设您在
spark
变量下有
SparkSession
对象可用)

>>将熊猫作为pd导入
>>>
>>>pdf=pd.read\u csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
>>>df=spark.createDataFrame(pdf)
>>>df.show(5)
+------------+-----------+------------+-----------+-------+
|萼片长|萼片宽|花瓣长|花瓣宽|种|
+------------+-----------+------------+-----------+-------+
|5.1 | 3.5 | 1.4 | 0.2 | setosa|
|4.9 | 3.0 | 1.4 | 0.2 |塞托萨|
|4.7 | 3.2 | 1.3 | 0.2 | setosa|
|4.6 | 3.1 | 1.5 | 0.2 | setosa|
|5.0 | 3.6 | 1.4 | 0.2 |塞托萨|
+------------+-----------+------------+-----------+-------+
仅显示前5行
然后只需在DataFrame中所需的列上使用
groupBy(*cols)
方法

>>grouped=df.groupBy(['petal\u width','species']).count()
>>>分组表演(5)
+-----------+----------+-----+
|花瓣|宽度|种类|数量|
+-----------+----------+-----+
|1.7弗吉尼亚州1|
|2.2 |弗吉尼亚| 3|
|1.8 |弗吉尼亚| 11|
|1.9弗吉尼亚州5|
|1.5 |花色| 10|
+-----------+----------+-----+
仅显示前5行