如何为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中的空数据框现有列添加赋值?的主要内容,如果未能解决你的问题,请参考以下文章