首页 > 解决方案 > 如何计算 Pyspark 数据框中的元素

问题描述

我有一个 pyspark 数据框。它是一个电影数据集。一列是由 分割的流派|。每部电影都有多种类型。

genres = spark.sql("SELECT DISTINCT genres FROM movies ORDER BY genres ASC")
genres.show(5)

在此处输入图像描述我想数一数每个流派有多少部电影。我也想展示那些电影是什么。就像下面这样: 我应该怎么做?在此处输入图像描述在此处输入图像描述

标签: apache-sparkpysparkapache-spark-sqlpyspark-dataframes

解决方案


这是一种方法:

# sample data
d = [('Action',), ('Action|Adventure',), ('Action|Adventure|Drama',)]
df = spark.createDataFrame(d, ['genres',])

# create count
agg_df = (df
          .rdd
          .map(lambda x: x.genres.split('|')) # gives nested list
          .flatMap(lambda x: x) # flatten the list
          .map(lambda x: (x,)) # convert to tuples
          .toDF(['genres'])
          .groupby('genres')
          .count())

agg_df.show()

+---------+-----+
|   genres|count|
+---------+-----+
|Adventure|    2|
|    Drama|    1|
|   Action|    3|
+---------+-----+

推荐阅读