apache-spark - 如何计算 Pyspark 数据框中的元素
问题描述
我有一个 pyspark 数据框。它是一个电影数据集。一列是由 分割的流派|
。每部电影都有多种类型。
genres = spark.sql("SELECT DISTINCT genres FROM movies ORDER BY genres ASC")
genres.show(5)
解决方案
这是一种方法:
# 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|
+---------+-----+
推荐阅读
- c# - WPF 组合框项目背景绑定到项目属性
- docker - Rancher 2 Kubernetes 证书已过期并出现错误 x509:证书已过期或尚未生效
- python - Python:使用 UTF-8 以二进制模式打开 PDF
- html - Ag-grid 表中实际行数
- java - iText 7提取的图像得到黑色背景
- json - Ansible 中的多行 var 声明
- flask - 将flask中的函数调用到Django屏幕中
- c++ - 如何在 Visual Studio C++ 中显示文本 2 秒
- python-3.x - 将多个值传递给python函数
- .htaccess - 使用 htaccess 更改文档路径