PySpark - 按列的值拆分/过滤DataFrame

时间:2016-02-03 23:58:22

标签: python apache-spark dataframe pyspark apache-spark-sql

我有一个与此示例类似的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)做到这一点?

2 个答案:

答案 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"

采取行动时,数据帧都不会被转换。