如何从pyspark数据框列值中删除方括号

时间:2018-08-07 10:27:46

标签: pyspark rdd braces

我正在通过从另一个数据框中选择一列并转换为RDD然后按如下所示返回DF并用索引压缩它来创建pyspark数据框:

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)

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

+---+---+
| _1| _2|
+---+---+
|[0]|  0|
|[0]|  1|
+---+---+

df_tmp.printSchema():
root
 |-- _1: struct (nullable = true)
 |    |-- value: long (nullable = true)
 |-- _2: long (nullable = true)

在写入配置单元表:saveAsTable()时,由于将值写入为“ {“ value”:0},这会引起问题,但是我只想将值设为:0。

如何摆脱此数据帧中的多余括号,以便在写入配置单元表时可以获得正常的整数值。

1 个答案:

答案 0 :(得分:0)

(将其写为答案而不是评论):

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

这将创建一个名为“ _1new”的新列,其中包括该结构的“值”(列)。