【问题标题】:Include null values in collect_list in pyspark在 pyspark 的 collect_list 中包含空值
【发布时间】:2019-11-29 18:54:38
【问题描述】:

我在使用pyspark 时尝试在collect_list 中包含空值,但是collect_list 操作不包括nulls。我查看了以下帖子 Pypsark - Retain null values when using collect_list 。但是,给出的答案不是我想要的。

我有一个这样的数据框df。

| id | family | date       |
----------------------------
| 1  |  Prod  | null       |
| 2  |  Dev   | 2019-02-02 |
| 3  |  Prod  | 2017-03-08 |

到目前为止,这是我的代码:

df.groupby("family").agg(f.collect_list("date").alias("entry_date"))

这给了我这样的输出:

| family | date       |
-----------------------
| Prod   |[2017-03-08]|
| Dev    |[2019-02-02]|

我真正想要的如下:

| family | date             |
-----------------------------
| Prod   |[null, 2017-03-08]|
| Dev    |[2019-02-02]      |

有人可以帮我解决这个问题吗?谢谢!

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    可能的解决方法是将所有空值替换为另一个值。 (也许不是最好的方法,但它仍然是一个解决方案)

    df = df.na.fill("my_null") # Replace null with "my_null"
    df = df.groupby("family").agg(f.collect_list("date").alias("entry_date"))
    

    应该给你:

    | family | date             |
    -----------------------------
    | Prod   |[my_null, 2017-03-08]|
    | Dev    |[2019-02-02]      |
    

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 2021-12-24
      • 1970-01-01
      • 2016-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多