我想基于pyspark数据框中的现有列添加一列。
我可以使用pandas作为添加列
transform_df = transform_df.withColumn('geohash', transform_df.apply(lambda x: pgh.encode(x.lat, x.lng, precision=9)))
如何添加火花?我使用了以下内容,但是在用户定义的函数不能包含多个arg的情况下出现一些错误:
some_udf = F.udf(lambda x: pgh.encode(x.lat, x.lng, precision=9))
transform_df = transform_df.withColumn('geohash',
some_udf(F.col(transform_df['lat'], transform_df['lng'])))
答案 0 :(得分:1)
由于您的UDF期望从两个不同的列进行输入,因此您的lambda函数还需要具有两个参数:
some_udf = F.udf(lambda lat, lng: pgh.encode(lat, lng, precision=9))
# ^^^ ^^^ two parameters corresponding to two input columns below
transform_df = transform_df.withColumn('geohash', some_udf(transform_df['lat'], transform_df['lng']))