map_filter
Fonction de collection : renvoie une nouvelle colonne de carte dont les paires clé-valeur satisfont une fonction prédicat donnée. Prend en charge Spark Connect.
Pour la fonction Databricks SQL correspondante, consultez la fonctionmap_filter.
Syntaxe
from pyspark.sql import functions as dbf
dbf.map_filter(col=<col>, f=<f>)
parameter
parameter | Type | Description |
|---|---|---|
|
| Le nom de la colonne ou une expression de colonne représentant la carte à filtrer. |
|
| Une fonction binaire qui définit le prédicat. Cette fonction doit renvoyer une colonne booléenne qui sera utilisée pour filtrer la carte d'entrée. |
Renvoie
pyspark.sql.Column: Une nouvelle colonne de carte contenant uniquement les paires clé-valeur qui satisfont le prédicat.
Exemples
Exemple 1 : Filtrer une carte avec une condition simple.
from pyspark.sql import functions as dbf
df = spark.createDataFrame([(1, {"foo": 42.0, "bar": 1.0, "baz": 32.0})], ("id", "data"))
row = df.select(
dbf.map_filter("data", lambda _, v: v > 30.0).alias("data_filtered")
).head()
sorted(row["data_filtered"].items())
[('baz', 32.0), ('foo', 42.0)]
Exemple 2 : Filtrage d'une carte avec une condition sur les clés
from pyspark.sql import functions as dbf
df = spark.createDataFrame([(1, {"foo": 42.0, "bar": 1.0, "baz": 32.0})], ("id", "data"))
row = df.select(
dbf.map_filter("data", lambda k, _: k.startswith("b")).alias("data_filtered")
).head()
sorted(row["data_filtered"].items())
[('bar', 1.0), ('baz', 32.0)]