当我使用UDF操作列时,出现了问题

时间:2019-05-19 20:20:27

标签: pandas pyspark user-defined-functions

当我使用UDF处理列时,我不确定UDF是否逐列处理该列中的元素?如果是这样,我不明白为什么会出现问题。

import pyspark.sql.types as typ
from pyspark.sql.functions import udf,pandas_udf, PandasUDFType
def parse_model(v):
    return v.split(' ')
Parse_model=pandas_udf(parse_model,typ.ArrayType(typ.StringType(),True))
sample_data_df.withColumn('Models',Parse_model('Model')).show(

应该是      串 在列而不是系列中。

AttributeError: 'Series' object has no attribute 'split'

1 个答案:

答案 0 :(得分:0)

标量熊猫用户定义函数采用pandas.Series并将结果作为pandas.Series返回。

由于v属于Series类型,因此您会收到错误消息。像下面那样更新udf将解决此问题。

def parse_model(v): 
   return pd.Series([v[0].split(' ')])