代码之家  ›  专栏  ›  技术社区  ›  Atihska

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

  •  0
  • Atihska  · 技术社区  · 6 年前

    我想在PiSkad数据文件中添加一个基于现有列的列。

    我可以使用pandas作为

    transform_df = transform_df.withColumn('geohash', transform_df.apply(lambda x: pgh.encode(x.lat, x.lng, precision=9)))

    我怎样才能加上火花?我使用了以下方法,但在用户定义的函数不能有多个参数时出现了一些错误:

        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 回复  |  直到 6 年前
        1
  •  1
  •   akuiper    6 年前

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