当我使用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'
答案 0 :(得分:0)
标量熊猫用户定义函数采用pandas.Series
并将结果作为pandas.Series
返回。
由于v属于Series类型,因此您会收到错误消息。像下面那样更新udf将解决此问题。
def parse_model(v):
return pd.Series([v[0].split(' ')])