首页 > 解决方案 > 如何将熊猫数据框列添加转换为pyspark列添加

问题描述

我想根据 pyspark 数据框中的现有列添加一列。

我可以使用熊猫添加一列

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'])))

标签: pythonpysparkapache-spark-sql

解决方案


由于您的 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']))

推荐阅读