我正在通过从另一个数据框中选择一列并转换为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。
如何摆脱此数据帧中的多余括号,以便在写入配置单元表时可以获得正常的整数值。
答案 0 :(得分:0)
(将其写为答案而不是评论):
df_tmp.withColumn("_1new", df_tmp._1.value)
这将创建一个名为“ _1new”的新列,其中包括该结构的“值”(列)。