【问题标题】:PySpark - Split/Filter DataFrame by column's valuesPySpark - 按列值拆分/过滤 DataFrame
【发布时间】:2016-05-13 10:06:04
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    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()
    

    【讨论】:

    • 请注意,在 Spark 2.0 之后,正确的命令应该是 words = df.select("Word").distinct().rdd.flatMap(lambda x: x).collect()
    【解决方案2】:

    除了zero323所说的,我可能会补充

    word.persist()
    

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

    【讨论】:

      猜你喜欢
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      相关资源
      最近更新 更多