我有一个与此示例类似的DataFrame:
Timestamp | Word | Count
30/12/2015 | example_1 | 3
29/12/2015 | example_2 | 1
28/12/2015 | example_2 | 9
27/12/2015 | example_3 | 7
... | ... | ...
我想用'word'列的值拆分这个数据框,以获得DataFrame的“列表”(在下一步中绘制一些数字)。例如:
DF1
Timestamp | Word | Count
30/12/2015 | example_1 | 3
DF2
Timestamp | Word | Count
29/12/2015 | example_2 | 1
28/12/2015 | example_2 | 9
DF3
Timestamp | Word | Count
27/12/2015 | example_3 | 7
有没有办法用PySpark(1.6)做到这一点?
答案 0 :(得分:4)
效率不高,但您可以使用过滤器映射唯一值列表:
words = df.select("Word").distinct().flatMap(lambda x: x).collect()
dfs = [df.where(df["Word"] == word) for word in words]
发布Spark 2.0
words = df.select("Word").distinct().rdd.flatMap(lambda x: x).collect()
答案 1 :(得分:1)
除了零323所说的,我可能会添加
word.persist()
在创建dfs之前,所以"单词"每当你对每个" dfs"
采取行动时,数据帧都不会被转换。