我正在尝试计算单词的每周出现次数。也就是说,本周每个单词是否比前一周更频繁。为此,我有点卡住了。我做了以下事情:
docker run
结果是:
m = sc.parallelize(["oded,12-12-2018", "oded,12-03-2018", "oded,12-12-2018", "oded,12-06-2018", "oded2,12-02-2018", "oded2,12-02-2018"])
m = m.map(lambda line: line.split(','))
weekly = m.map(lambda line: (line[0], (parse(line[1]).strftime("%V%y"))))
s = sql.createDataFrame(daily)
s.groupby("_1", "_2").count().sort("_2")
我怎样才能得到oded:0 =(2 - 2)和oded2:2 =(2 - 0)
谢谢!
答案 0 :(得分:2)
您好,您可以使用滞后窗口功能查找上周的值,在您计算同一周的单词之后。如果没有以前的count值值,那么几周就可以使用na.drop()来完全删除这些行。
from pyspark.sql.functions import lag, col,coalesce
from pyspark.sql.window import Window
w = Window().partitionBy("_1").orderBy(col("_2"))
s.select("*", lag("count").over(w).alias("prev_week")).na.fill(0).show()