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

如何从pyspark dataframe列值中删除方括号

  •  0
  • muni  · 技术社区  · 7 年前

    我正在创建一个pyspark数据帧,方法是从另一个数据帧中选择一个列,并在转换到RDD后用index压缩它,然后返回到DF,如下所示:

    df_tmp=o[1].select("value").rdd.zipWithIndex().toDF()
    

    o[1]是数据帧,o[1]中的值:

    +-----+
    |value|
    +-----+
    |    0|
    |    0|
    |    0|
    +-----+
    o[1].printSchema()
    root
     |-- value: integer (nullable = true)
    

    在此过程中,“value”将获得额外的方括号,如下所示:

    +---+---+
    | _1| _2|
    +---+---+
    |[0]|  0|
    |[0]|  1|
    +---+---+
    
    df_tmp.printSchema():
    root
     |-- _1: struct (nullable = true)
     |    |-- value: long (nullable = true)
     |-- _2: long (nullable = true)
    

    当写入hive table:saveAsTable()时,它会导致问题,因为它正在将值写入:“{”value:0}。不过,我只希望值为:0。

    如何从这个数据框中去掉多余的大括号,以便在写入配置单元表时可以得到正常的整数值。

    1 回复  |  直到 7 年前
        1
  •  0
  •   dorvak    7 年前

    (将此作为回答而不是评论):

    df_tmp.withColumn("_1new", df_tmp._1.value)

    这将创建一个名为“u1new”的新列,包括结构的“value”(列)。

    推荐文章