【问题标题】:How to add assign value to empty dataframe existing column in scala?如何为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?您希望该列的值是多少?

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


【解决方案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() 创建新列。我想为存在但没有名称的现有列添加默认值。
  • 这已经在下面的页面中提到了:[stackoverflow.com/questions/50260820/…希望这能解决你的整个问题。
  • 我的专栏也没有名字,没有价值。例如:当我将 csv 数据加载到数据框时,数据框加载了三列。你能看到最后一列吗?我想在此列中添加名称并分配一些值。 > `|-- DCR: 字符串 (nullable = true) |--SHO: 字符串 (nullable = true) |-- : 字符串 (nullable = true)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多