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行