首页 > 解决方案 > 将第 1 行提升为列标题 - Spark DataFrame

问题描述

我低于 Spark 数据框。

在此处输入图像描述

我想将第 1 行提升为列标题,新的 spark DataFrame 应该是

在此处输入图像描述

我知道这可以在 pandas 中轻松完成,如下所示:

new_header =  pandaDF.iloc[0]
pandaDF = pandaDF[1:]
pandaDF.columns = new_header

但是不想转换成 Pandas DF,因为必须将其持久化到数据库中,其中必须将 pandas DF 转换回 Spark DF,然后注册为表,然后写入数据库。

标签: python-3.xscalapysparkapache-spark-sqlazure-databricks

解决方案


Try with .toDF and filter our the column values.

Example:

#sample dataframe
df.show()
#+----------+------------+----------+
#|    prop_0|      prop_1|    prop_2|
#+----------+------------+----------+
#|station_id|station_name|sample_num|
#|       101|  Station101| Sample101|
#|       102|  Station102| Sample102|
#+----------+------------+----------+

from pyspark.sql.functions import *

cols=sc.parallelize(cols).map(lambda x:x).collect()

df.toDF(*cols).filter(~col("station_id").isin(*cols)).show()
#+----------+------------+----------+
#|station_id|station_name|sample_num|
#+----------+------------+----------+
#|       101|  Station101| Sample101|
#|       102|  Station102| Sample102|
#+----------+------------+----------+

推荐阅读