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

Posted

技术标签:

【中文标题】如何为scala中的空数据框现有列添加赋值?【英文标题】:How to add assign value to empty dataframe existing column in scala? 【发布时间】:2019-07-26 07:19:37 【问题描述】:

我正在阅读一个 csv 文件,其中包含 |最后的分隔符,而加载方法使数据框中的最后一列在 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.

【问题讨论】:

所以您希望它为 Null?您希望该列的值是多少? 【参考方案1】:

不完全清楚您想要做什么,只是将该列重命名为 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"))

【讨论】:

我想为重命名为“Invalid _Status”的列分配一些默认值。 我用 Invalid_Status 列中的默认值更新了答案。请检查它是否解决了您的问题。 @Parthe 您正在使用 withColumn() 创建新列。我想为存在但没有名称的现有列添加默认值。 这已经在下面的页面中提到了:[***.com/questions/50260820/…希望这能解决你的整个问题。 我的专栏也没有名字,没有价值。例如:当我将 csv 数据加载到数据框时,数据框加载了三列。你能看到最后一列吗?我想在此列中添加名称并分配一些值。 > `|-- DCR: 字符串 (nullable = true) |--SHO: 字符串 (nullable = true) |-- : 字符串 (nullable = true)

以上是关于如何为scala中的空数据框现有列添加赋值?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 RadioButton 赋值

如何使用 Scala/Spark 添加不基于数据框中现有列的新列? [复制]

scala spark 使用 expr 在列内赋值

Scala Spark,如何为列添加值

如何为以下容器赋值?

使用其他现有列 Spark/Scala 添加新列