首页 > 解决方案 > Scala - 如何将列附加到保留原始列名的 DataFrame?

问题描述

我有一个基本的 DataFrame,其中包含所有数据和几个派生的 DataFrame,我随后从基本的 DF 进行分组、连接等创建。

每次我想将一列附加到包含最相关数据的最后一个 DataFrame 时,我都必须执行以下操作:

val theMostRelevantFinalDf = olderDF.withColumn("new_date_", to_utc_timestamp(unix_timestamp(col("new_date"))
  .cast(TimestampType), "UTC").cast(StringType)).drop($"new_date")

如您所见,我必须将原始列名更改为new_date_

但我希望列名保持不变。但是,如果我不更改名称,则该列将被删除。所以重命名只是一个不太好的解决方法。

追加列时如何保留原始列名?

标签: scalaapache-sparkapache-spark-sql

解决方案


据我所知,您不能在 DataFrame 转换中创建两个具有相同名称的列。我将新列重命名为较旧的名称,例如

val theMostRelevantFinalDf = olderDF.withColumn("new_date_", to_utc_timestamp(unix_timestamp(col("new_date"))
  .cast(TimestampType), "UTC").cast(StringType)).drop($"new_date").withColumnRenamed("new_date_", "new_date")

推荐阅读