我有一个数据帧df有VectorUDT指定的列features.如何获取列的元素,比如第一个元素?
我尝试过以下操作
from pyspark.sql.functions import udf
first_elem_udf = udf(lambda row: row.values[0])
df.select(first_elem_udf(df.features)).show()
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个net.razorvine.pickle.PickleException: expected zero arguments for construction of ClassDict(for numpy.dtype)错误.如果我first_elem_udf = first_elem_udf(lambda row: row.toArray()[0])改为相同的错误.
我也试过,explode()但我得到一个错误,因为它需要一个数组或地图类型.
我认为这应该是一种常见的操作.
dataframe apache-spark apache-spark-sql pyspark apache-spark-ml
我有一个火花数据帧,行为 -
1 | [a, b, c]
2 | [d, e, f]
3 | [g, h, i]
Run Code Online (Sandbox Code Playgroud)
现在我想只保留数组列中的前2个元素.
1 | [a, b]
2 | [d, e]
3 | [g, h]
Run Code Online (Sandbox Code Playgroud)
怎么能实现呢?
注意 - 请记住,我不是在这里提取单个数组元素,而是可能包含多个元素的数组的一部分.