我'm using PySpark'的新 pandas_udf
装饰器,我试图让它将多列作为输入并返回一个系列作为输入,但是,我得到一个 TypeError: Invalid argument
示例代码
@pandas_udf(df.schema, PandasUDFType.SCALAR)
def fun_function(df_in):
df_in.loc[df_in['a'] < 0] = 0.0
return (df_in['a'] - df_in['b']) / df_in['c']
1 回答
A SCALAR udf期望pandas系列作为输入而不是数据帧 . 对于您的情况,没有必要使用udf . 剪切后列
a
,b
,c
的直接计算应该有效:如果你必须使用
pandas_udf
,你的返回类型必须是double
,而不是df.schema
,因为你只返回一个pandas系列而不是pandas数据帧;此外,您还需要将列作为Series传递到函数而不是整个数据框: