我试图将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
我尝试使用select
和withColumn
-结果相同。