1 回答

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
您很可能會(huì)收到此錯(cuò)誤,因?yàn)?apandas_udf采用 pandas Series 作為輸入,并且您將該decode函數(shù)直接應(yīng)用于該系列,而不是將其應(yīng)用于 pandas Series 中的值。
例如,在下面的示例中,我稍微擴(kuò)展了您的 lambda 函數(shù),以便您可以看到它。我采用 pandas 系列,將polyline.decode函數(shù)應(yīng)用于該系列,然后再次返回結(jié)果系列。請(qǐng)注意,我還將返回類(lèi)型更改為ArrayType(DoubleType())而不是ArrayType(StringType()).
import pandas as pd
from pyspark.sql.types import ArrayType, DoubleType
....
df = spark.createDataFrame([["~sqU__pR_jpv@_pR"], ["_~t[__pR~qy@_pR"]], ["geolocations"])
@pandas_udf(ArrayType(DoubleType()))
def lat_long_udf(s: pd.Series) -> pd.Series:
return s.apply(lambda x: polyline.decode(x)[0])
df1=df.withColumn('decoded', lat_long_udf(df.geolocations))
df1.collect()
添加回答
舉報(bào)