[英]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.