array_position-传递多个列时,列不可迭代

时间:2019-05-29 19:20:58

标签: apache-spark pyspark

我试图将array_position函数应用于简单数据框的两列。

df = spark.createDataFrame([(["c", "b", "a","e","f"],'a')], ['arraydata','item'])

在第一次尝试中,我传递了第二个参数为硬编码('a'

df.select(df.arraydata, array_position(f.col("arraydata"),'a')).show()

它很好地返回:

+---------------+----------------------------+
|      arraydata|array_position(arraydata, a)|
+---------------+----------------------------+
|[c, b, a, e, f]|                           3|
+---------------+----------------------------+

但是,当我尝试添加第二个失败时:

from pyspark.sql.functions import array_position
df.select(df.arraydata, array_position(f.col("arraydata"),f.col("item"))).show()

我遇到的错误是函数覆盖问题的常见问题,但实际情况并非如此:

TypeError: Column is not iterable

我尝试使用selectwithColumn-结果相同。

0 个答案:

没有答案