create_map

从偶数个输入列或列引用中创建新的映射列。 输入列分组为键值对,形成映射。 例如,输入(key1、value1、key2、value2、...)将生成将 key1 与 value1、key2 与 value2 等关联的映射。 该函数还支持将列分组为列表。

Syntax

from pyspark.sql import functions as sf

sf.create_map(*cols)

参数

参数 类型 Description
cols pyspark.sql.Column 或 str 输入列名或列对象分组到键值对中。 这些也可以表示为列列表。

退货

pyspark.sql.Column:映射类型的新列,其中每个值都是由输入参数中提供的相应键值对构成的映射。

例子

示例 1:create_map函数的基本用法。

from pyspark.sql import functions as sf
df = spark.createDataFrame([("Alice", 2), ("Bob", 5)], ("name", "age"))
df.select(sf.create_map('name', 'age')).show()
+--------------+
|map(name, age)|
+--------------+
|  {Alice -> 2}|
|    {Bob -> 5}|
+--------------+

示例 2:包含列列表的 create_map 函数的用法。

from pyspark.sql import functions as sf
df = spark.createDataFrame([("Alice", 2), ("Bob", 5)], ("name", "age"))
df.select(sf.create_map([df.name, df.age])).show()
+--------------+
|map(name, age)|
+--------------+
|  {Alice -> 2}|
|    {Bob -> 5}|
+--------------+

示例 3:使用具有多个键值对的 create_map 函数。

from pyspark.sql import functions as sf
df = spark.createDataFrame([("Alice", 2, "female"),
    ("Bob", 5, "male")], ("name", "age", "gender"))
df.select(sf.create_map(sf.lit('name'), df['name'],
    sf.lit('gender'), df['gender'])).show(truncate=False)
+---------------------------------+
|map(name, name, gender, gender)  |
+---------------------------------+
|{name -> Alice, gender -> female}|
|{name -> Bob, gender -> male}    |
+---------------------------------+

示例 4:使用具有不同类型值的 create_map 函数。

from pyspark.sql import functions as sf
df = spark.createDataFrame([("Alice", 2, 22.2),
    ("Bob", 5, 36.1)], ("name", "age", "weight"))
df.select(sf.create_map(sf.lit('age'), df['age'],
    sf.lit('weight'), df['weight'])).show(truncate=False)
+-----------------------------+
|map(age, age, weight, weight)|
+-----------------------------+
|{age -> 2.0, weight -> 22.2} |
|{age -> 5.0, weight -> 36.1} |
+-----------------------------+