pyspark中的计数

vs3odd8k  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(402)

目前正在尝试将我从pandas制作的脚本转换为pyspark,我有一个Dataframe,其中包含以下形式的数据:

index | letter
------|-------
0     | a
1     | a
2     | b
3     | c
4     | a
5     | a
6     | b

我想创建以下Dataframe,其中存储每个字母示例的出现次数,例如,第一次看到“a”时,其出现次数为0,第二次为1,第三次为2:

index | letter | occurrence
------|--------|-----------
0     | a      | 0
1     | a      | 1
2     | b      | 0
3     | c      | 0
4     | a      | 2
5     | a      | 3
6     | b      | 1

我可以通过以下方式实现这一点: df['occurrence'] = df.groupby('letter').cumcount() 在Pypark我该怎么做?找不到类似的现有方法。

inkz8wg9

inkz8wg91#

你要找的功能叫做窗口函数

from pyspark.sql.functions import row_number
from pyspark.sql.window import Window

df.withColumn("occurence", row_number().over(Window.partitionBy("letter").orderBy("index")))

相关问题