PySpark SQL 函数的 element_at(~)
方法用于从 PySpark 列中的列表或映射中提取值。
参数
1.col
| string
或 Column
要从中提取值的列表或映射的列。
2. extraction
| int
您要提取的值的位置。支持负定位 - extraction=-1
将从每个列表中提取最后一个元素。
警告
该位置不是基于索引的。这意味着 extraction=1
将提取列表或映射中的第一个值。
返回值
新的 PySpark 列。
例子
从 PySpark 列中的数组中提取 n-th 值
考虑以下包含一些列表的 PySpark DataFrame:
rows = [[[5,6]], [[7,8]]]
df = spark.createDataFrame(rows, ['vals'])
df.show()
+------+
| vals|
+------+
|[5, 6]|
|[7, 8]|
+------+
要从 vals
中的每个列表中提取第二个值,我们可以使用 element_at(~)
,如下所示:
df_res = df.select(F.element_at('vals',2).alias('2nd value'))
df_res.show()
+---------+
|2nd value|
+---------+
| 6|
| 8|
+---------+
在此,请注意以下事项:
-
位置
2
不是基于索引的。 -
我们使用
alias(~)
方法为element_at(~)
返回的列分配标签。
请注意,提取超出范围的值将返回 null
:
df_res = df.select(F.element_at('vals',3))
df_res.show()
+-------------------+
|element_at(vals, 3)|
+-------------------+
| null|
| null|
+-------------------+
我们还可以通过为 extraction
提供负值来提取最后一个元素:
df_res = df.select(F.element_at('vals',-1).alias('last value'))
df_res.show()
+----------+
|last value|
+----------+
| 6|
| 8|
+----------+
从 PySpark 列中的Map中提取值
考虑以下包含一些 dict
值的 PySpark DataFrame:
rows = [[{'A':4}], [{'A':5, 'B':6}]]
df = spark.createDataFrame(rows, ['vals'])
df.show()
+----------------+
| vals|
+----------------+
| {A -> 4}|
|{A -> 5, B -> 6}|
+----------------+
要提取 vals
列中具有键 'A'
的值:
df_res = df.select(F.element_at('vals', F.lit('A')))
df_res.show()
+-------------------+
|element_at(vals, A)|
+-------------------+
| 4|
| 5|
+-------------------+
请注意,使用不存在的键提取值将返回 null
:
df_res = df.select(F.element_at('vals', F.lit('B')))
df_res.show()
+-------------------+
|element_at(vals, B)|
+-------------------+
| null|
| 6|
+-------------------+
此处,键 'B'
不存在于映射 {'A':4}
中,因此为该行返回了 null
。
相关用法
- Python PySpark SQL Functions explode方法用法及代码示例
- Python PySpark SQL Functions expr方法用法及代码示例
- Python PySpark SQL Functions split方法用法及代码示例
- Python PySpark SQL Functions repeat方法用法及代码示例
- Python PySpark SQL Functions concat方法用法及代码示例
- Python PySpark SQL Functions instr方法用法及代码示例
- Python PySpark SQL Functions count_distinct方法用法及代码示例
- Python PySpark SQL Functions dayofmonth方法用法及代码示例
- Python PySpark SQL Functions date_add方法用法及代码示例
- Python PySpark SQL Functions array方法用法及代码示例
- Python PySpark SQL Functions concat_ws方法用法及代码示例
- Python PySpark SQL Functions col方法用法及代码示例
- Python PySpark SQL Functions translate方法用法及代码示例
- Python PySpark SQL Functions dayofweek方法用法及代码示例
- Python PySpark SQL Functions regexp_extract方法用法及代码示例
- Python PySpark SQL Functions regexp_replace方法用法及代码示例
- Python PySpark SQL Functions round方法用法及代码示例
- Python PySpark SQL Functions countDistinct方法用法及代码示例
- Python PySpark SQL Functions date_format方法用法及代码示例
- Python PySpark SQL Functions collect_list方法用法及代码示例
- Python PySpark SQL Functions lit方法用法及代码示例
- Python PySpark SQL Functions upper方法用法及代码示例
- Python PySpark SQL Functions length方法用法及代码示例
- Python PySpark SQL Functions dayofyear方法用法及代码示例
- Python PySpark SQL Functions trim方法用法及代码示例
注:本文由纯净天空筛选整理自Isshin Inada大神的英文原创作品 PySpark SQL Functions | element_at method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。