gpt4 book ai didi

dataframe - 如何从键值图中提取值?

转载 作者:行者123 更新时间:2023-12-05 03:03:51 24 4
gpt4 key购买 nike

我有一个映射类型的列,其中键和值发生变化。我正在尝试提取值并创建一个新列。

输入:

----------------+
|symbols |
+---------------+
|[3pea -> 3PEA] |
|[barello -> BA]|
|[] |
|[] |
+---------------+

预期输出:

--------+
|symbols|
+-------+
|3PEA |
|BA |
| |
| |
+-------+

这是我到目前为止使用 udf 尝试的结果:

def map_value=udf((inputMap:Map[String,String])=> {inputMap.map(x=>x._2) 
})

java.lang.UnsupportedOperationException: Schema for type scala.collection.immutable.Iterable[String] is not supported

最佳答案

自星火 scala v2.3 api , sql v2.3 api , 或 pyspark v2.4 api你可以使用 spark sql 函数 map_values

下面是pyspark,scala会很像。
设置(假设 SparkSession 作为 spark):

from pyspark.sql import functions as F

df = (
spark.read.json(sc.parallelize(["""[
{"key": ["3pea"], "value": ["3PEA"] },
{"key": ["barello"], "value": ["BA"] }
]"""]))
.select(F.map_from_arrays(F.col("key"), F.col("value")).alias("symbols") )
)

df.printSchema()
df.show()
root
|-- symbols: map (nullable = true)
| |-- key: string
| |-- value: string (valueContainsNull = true)

+---------------+
| symbols|
+---------------+
| [3pea -> 3PEA]|
|[barello -> BA]|
+---------------+
df.select((F.map_values(F.col("symbols"))[0]).alias("map_vals")).show()
+--------+
|map_vals|
+--------+
| 3PEA|
| BA|
+--------+

关于dataframe - 如何从键值图中提取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com