【发布时间】:2020-05-09 06:15:27
【问题描述】:
我有一个包含一列的数据框。在这个数据框的每一行中,都有一个列表。例如:
df = spark.createDataFrame(
[
[[13,23]],
[[55,65]],
],
['col',]
)
然后我定义了一个 UDF,它基本上将列表中的第一个数字加 1,并将列表的第二个数字加 1.5。
def calculate(mylist) :
x = mylist[0] + 1
y = mylist[1] + 1.5
return x,y
问题是,当我将此函数应用于我的数据框时,它返回 X 值但不返回 Y 值。 我认为这是因为 Y 值不是整数。 这就是我这样做的方式。
import pyspark.sql.functions as F
from pyspark.sql.types import IntegerType, ArrayType
func = F.udf(lambda x: calculate(x), ArrayType(IntegerType()))
df.withColumn('vals', func('col')).show()
如何获取 Y 值和 X 值?为了便于理解和解决,我简化了 UDF 和示例数据框。
【问题讨论】:
标签: list dataframe pyspark typeerror user-defined-functions