我试图collect_list
在 using 时包含空值pyspark
,但是该collect_list
操作排除了nulls
. 我研究了以下帖子Pypsark - 使用collect_list 时保留空值。然而,给出的答案并不是我想要的。
我有一个df
像这样的数据框。
| id | family | date |
----------------------------
| 1 | Prod | null |
| 2 | Dev | 2019-02-02 |
| 3 | Prod | 2017-03-08 |
Run Code Online (Sandbox Code Playgroud)
到目前为止,这是我的代码:
df.groupby("family").agg(f.collect_list("date").alias("entry_date"))
这给了我这样的输出:
| family | date |
-----------------------
| Prod |[2017-03-08]|
| Dev |[2019-02-02]|
Run Code Online (Sandbox Code Playgroud)
我真正想要的是如下:
| family | date |
-----------------------------
| Prod |[null, 2017-03-08]|
| Dev |[2019-02-02] |
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?谢谢你!
一个可能的解决方法是将所有空值替换为另一个值。(也许不是最好的方法,但它仍然是一个解决方案)
df = df.na.fill("my_null") # Replace null with "my_null"
df = df.groupby("family").agg(f.collect_list("date").alias("entry_date"))
Run Code Online (Sandbox Code Playgroud)
应该给你:
| family | date |
-----------------------------
| Prod |[my_null, 2017-03-08]|
| Dev |[2019-02-02] |
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5126 次 |
最近记录: |