map_zip_with

Koleksiyon: Anahtar-değer çiftlerine bir işlev uygulayarak verilen iki eşlemeyi tek bir eşlemede birleştirir. Spark Connect'i destekler.

İlgili Databricks SQL fonksiyonu için bakınız map_zip_with fonksiyonu.

Sözdizimi

from pyspark.sql import functions as dbf

dbf.map_zip_with(col1=<col1>, col2=<col2>, f=<f>)

Parametreler

Parametre Türü Description
col1 pyspark.sql.Column veya str İlk sütunun adı veya ilk eşlemeyi temsil eden bir sütun ifadesi.
col2 pyspark.sql.Column veya str İkinci sütunun adı veya ikinci eşlemeyi temsil eden bir sütun ifadesi.
f function İki eşlemedeki değerlerin nasıl birleştirildiğini tanımlayan üçüncül bir işlev. Bu işlev, sonuçta elde edilen eşlemede değer olarak kullanılacak bir sütun döndürmelidir.

İade

pyspark.sql.Column: Her anahtar-değer çiftinin işlevi giriş eşlemelerindeki ilgili anahtar-değer çiftlerine uygulamanın sonucu olduğu yeni eşleme sütunu.

Örnekler

Örnek 1: İki eşlemeyi basit bir işlevle birleştirme

from pyspark.sql import functions as dbf
df = spark.createDataFrame([
  (1, {"A": 1, "B": 2}, {"A": 3, "B": 4})],
  ("id", "map1", "map2"))
row = df.select(
  dbf.map_zip_with("map1", "map2", lambda _, v1, v2: v1 + v2).alias("updated_data")
).head()
sorted(row["updated_data"].items())
[('A', 4), ('B', 6)]

Örnek 2: eşleşmeyen anahtarlarla iki eşlemeyi birleştirme

from pyspark.sql import functions as dbf
df = spark.createDataFrame([
  (1, {"A": 1, "B": 2}, {"B": 3, "C": 4})],
  ("id", "map1", "map2"))
row = df.select(
  dbf.map_zip_with("map1", "map2",
    lambda _, v1, v2: dbf.when(v2.isNull(), v1).otherwise(v1 + v2)
  ).alias("updated_data")
).head()
sorted(row["updated_data"].items())
[('A', 1), ('B', 5), ('C', None)]