簡體   English   中英

PySpark 將 Map 鍵值替換為 null 鍵的空字符串

[英]PySpark replace Map Key-Value with empty string for null keys

我在我的專欄上做了 A groupby,由於某些原因,我的 dataframe 看起來像這樣

ID           col
1            [item1 -> 2, -> 3, item3 -> 4, -> 5]
2            [item2 -> 1, -> 7, item3 -> 2, -> 7]

我想刪除沒有密鑰或 null 密鑰的 KV

我想要這樣的東西

ID           col
1            [item1 -> 2, item3 -> 4, -> 5]
2            [item2 -> 1, item3 -> 2, -> 7]

我的方法

dsNew = ds.withColumn("col", expr("map_filter(col, (k, v) ->  k != '')"))

但是map_filter方法在PySpark中不可用

map_filter()從 3.1.0 版開始可用。 但是,您的列需要是map類型,例如:

root
 |-- id: long (nullable = true)
 |-- data: map (nullable = true)
 |    |-- key: string
 |    |-- value: double (valueContainsNull = true)

然后您可以執行以下操作:

from pyspark.sql import SparkSession, functions as F

df = df.withColumn("filtered_data", F.map_filter("data", lambda k, v: k != ""))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM