【问题标题】:Is there a shorthand for selecting only one dataframe's columns after a join?连接后是否有只选择一个数据框列的简写?
【发布时间】:2021-08-27 16:24:26
【问题描述】:

我正在使用数据框在 scala 中工作,但数据框有大约 60 列。

在 Databricks 管道中,我们将几列与一个标识列分开来验证一些数据,从而产生一个“参考”数据框。我想将它加入到主要的大型数据框中,并将经过验证的数据插入到原始列中。

为简单起见,我希望生成的数据框与原始的架构相匹配,因此没有任何参考列。

在小范围内,这并不太难:

 myDF = myDF
  .join(refDF,
        myDF("Identity") === refDF("RefIdentity"),
        "inner")
  .withColumn("Foo", $"refFoo")
  .select("Identity","Foo","Column2","Column3"...)

当处理大量列时,这会变成一个巨大的痛苦。有没有更快的方法在 withColumn 操作之后只从 myDF 中选择列?

【问题讨论】:

  • 是的,你可以。首先用val cols=myDf.columns 保存myDf 的列,然后在最终的选择表达式中使用cols
  • 确认就是这么简单 - .select(cols.head, cols.tail: _*) 我们开始比赛了。谢谢

标签: scala dataframe azure-databricks


【解决方案1】:

.select 将数组作为参数,首选方法:

val cols=myDf.columns

...
    .select(cols.head, cols.tail: _*)

感谢 cmets 中的 abiratsis。

【讨论】:

    猜你喜欢
    • 2018-02-17
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2018-09-16
    • 2011-01-06
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多