我的数据帧有两个数组列.我想从第一列中提取索引在第二列中的元素.例如,我有以下数据集
df = spark.createDataFrame(
[
{
'text': ['0', '1', '2', '3', '4', '5']
'indices': [0, 2, 4],
},
]
)
所以我希望列的值为"0","2","4].
有没有可能在不写UDF的情况下实现这一点?
我的数据帧有两个数组列.我想从第一列中提取索引在第二列中的元素.例如,我有以下数据集
df = spark.createDataFrame(
[
{
'text': ['0', '1', '2', '3', '4', '5']
'indices': [0, 2, 4],
},
]
)
所以我希望列的值为"0","2","4].
有没有可能在不写UDF的情况下实现这一点?
您可以try 将expr
函数与TRANSFORM
和element_at
一起使用,以根据第二个数组中提供的索引从第一个数组中 Select 元素.
例如:
from pyspark.sql import SparkSession
from pyspark.sql.functions import expr
df = df.withColumn(
"selected_text",
expr("TRANSFORM(indices, i -> element_at(text, i))")
)
df.show()