【问题标题】:Scala DataFrame, copy value of non null column into a new columnScala DataFrame,将非空列的值复制到新列中
【发布时间】:2020-10-12 07:24:58
【问题描述】:

我有一个 Scala DataFrame 并想向它添加一个新列,以便它的值基于两个非空列中的任何一个。例如。在下表中,col1 和 col2 是我要添加新列的列,如果 col1 为空,则新列的值来自 col2,反之亦然。 col1 和 col2 之一将始终具有非空值。我只需要在 Scala 中执行此操作而不使用 SQL。提前感谢您的帮助。

<table><tbody><tr><th>Col1</th><th>Col2</th><th>Col3</th></tr><tr><td>11</td><td>null</td><td>Value13</td></tr><tr><td>null</td><td>22</td><td>Value23</td></tr><tr><td>32</td><td>32</td><td>Value33</td></tr></tbody></table>

这是我可以尝试的最好方法,但它不起作用。

df.withColumn("Col", df.Col1.isNull() ? df.Col2: df.Col1)

【问题讨论】:

标签: scala dataframe apache-spark


【解决方案1】:

尝试使用when函数:

df.withColumn("Col", when(col("Col1").isNull(), col("Col2")).otherwise(col("Col1")))

【讨论】:

  • 谢谢弗拉迪斯拉夫,我刚刚在另一篇文章中找到了答案,但已经对你的答案投了赞成票 :) 因为我没有足够的代表,所以它不会显示。
猜你喜欢
  • 2019-01-08
  • 2017-03-10
  • 2021-12-13
  • 2018-05-16
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-27
  • 2017-05-27
相关资源
最近更新 更多