如何将pandas dataframe列添加项转换为pyspark列添加项

时间:2018-07-23 19:49:08

标签: python pyspark apache-spark-sql

我想基于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'])))

1 个答案:

答案 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']))
相关问题