pyspark:计算每个不同值的出现次数

时间:2018-12-06 11:28:27

标签: pyspark

我认为这个问题与Spark DataFrame: count distinct values of every column

有关

所以基本上我有一个火花数据帧,列A的值为1,1,2,2,1

所以我想计算每个不同的值(在这种情况下为12)出现在A列中的次数,并打印类似的内容

distinct_values | number_of_apperance
1 | 3
2 | 2

2 个答案:

答案 0 :(得分:1)

我不确定您是否正在寻找以下解决方案: 这是我对此的想法。假设您有一个这样的数据框。

>>> listA = [(1,'AAA','USA'),(2,'XXX','CHN'),(3,'KKK','USA'),(4,'PPP','USA'),(5,'EEE','USA'),(5,'HHH','THA')]
>>> df = spark.createDataFrame(listA, ['id', 'name','country'])

>>> df.show();
+---+----+-------+
| id|name|country|
+---+----+-------+
|  1| AAA|    USA|
|  2| XXX|    CHN|
|  3| KKK|    USA|
|  4| PPP|    USA|
|  5| EEE|    USA|
|  5| HHH|    THA|
+---+----+-------+

我想知道不同的国家/地区代码出现在此特定数据框中,并应打印为别名。

import pyspark.sql.functions as func
df.groupBy('country').count().select(func.col("country").alias("distinct_country"),func.col("count").alias("country_count")).show()

+----------------+-------------+
|distinct_country|country_count|
+----------------+-------------+
|             THA|            1|
|             USA|            4|
|             CHN|            1|
+----------------+-------------+

您是否在寻找类似的东西?

答案 1 :(得分:1)

我刚刚发布了此信息,因为我认为使用别名的其他答案可能会造成混淆。您需要的是groupbycount方法:

from pyspark.sql.types import *
l = [
1
,1
,2
,2
,1
]

df = spark.createDataFrame(l, IntegerType())
df.groupBy('value').count().show()

+-----+-----+ 
|value|count| 
+-----+-----+ 
|    1|    3|
|    2|    2| 
+-----+-----+