如何在scala中的空数据框现有列上添加赋值?

时间:2019-07-26 07:19:37

标签: scala dataframe apache-spark apache-spark-sql

我正在读取具有|最后一个定界符,而load方法在Spark 1.6中使数据帧中的最后一列没有名称和值

df.withColumnRenamed(df.columns(83),“ Invalid_Status”)。drop(df.col(“ Invalid_Status”))

val df = sqlContext.read.format("com.databricks.spark.csv").option("delimiter","|").option("header","true").load("filepath") 
val df2 = df.withColumnRenamed(df.columns(83),"Invalid_Status").

I expected result 
root
 |-- FddCell: string (nullable = true)
 |-- Trn_time: string (nullable = true)
 |-- CELLNAME.FddCell: string (nullable = true)
 |-- Invalid_Status: string (nullable = true)

but actual output is
root
 |-- FddCell: string (nullable = true)
 |-- Trn_time: string (nullable = true)
 |-- CELLNAME.FddCell: string (nullable = true)
 |-- : string (nullable = true)

with no value in column so I have to drop this column and again make new column.

1 个答案:

答案 0 :(得分:0)

将列重命名为Invalid_Status或完全删除该列并不确定要做什么。据我了解,您正在尝试对没有名称的最后一列进行操作(重命名/删除)。

但是我会尽力为您提供两种解决方案-

要使用相同的值(空白)重命名该列:

val df2 = df.withColumnRenamed(df.columns.last,"Invalid_Status")

仅要删除最后一列而不知道其名称,请使用:

val df3 = df.drop(df.columns.last)

然后添加具有默认值的“ Invalid_Status”列:

val requiredDf = df3.withColumn("Invalid_Status", lit("Any_Default_Value"))