Python PySpark-按列分割/过滤数据帧';s值

Python PySpark-按列分割/过滤数据帧';s值,python,apache-spark,dataframe,pyspark,apache-spark-sql,Python,Apache Spark,Dataframe,Pyspark,Apache Spark Sql,我有一个类似于此示例的数据帧: 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”列的值拆分这个数据帧,以获得数据帧的“列表”(在下一步中绘制一些图形)。例如: DF1 Timestamp | Word | Count

我有一个类似于此示例的数据帧:

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”列的值拆分这个数据帧,以获得数据帧的“列表”(在下一步中绘制一些图形)。例如:

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)做到这一点?

虽然效率不高,但您可以使用过滤器映射唯一值列表:

words = df.select("Word").distinct().flatMap(lambda x: x).collect()
dfs = [df.where(df["Word"] == word) for word in words]
PostSpark 2.0

words = df.select("Word").distinct().rdd.flatMap(lambda x: x).collect()

除了zero323所说的之外,我还想补充一点

word.persist()

在创建dfs之前,不需要每次对每个“dfs”执行操作时都转换“Word”数据帧。

注意,Spark 2.0之后,正确的命令是words=df.select(“Word”).distinct().rdd.flatMap(lambda x:x).collect()