Scala DataFrame,将非空列的值复制到新列中

Posted

技术标签:

【中文标题】Scala DataFrame,将非空列的值复制到新列中【英文标题】:Scala DataFrame, copy value of non null column into a new column 【发布时间】: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)

【问题讨论】:

我在这里找到了答案:***.com/questions/43853949/… 【参考方案1】:

尝试使用when函数:

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

【讨论】:

谢谢弗拉迪斯拉夫,我刚刚在另一篇文章中找到了答案,但已经对你的答案投了赞成票 :) 因为我没有足够的代表,所以它不会显示。

以上是关于Scala DataFrame,将非空列的值复制到新列中的主要内容,如果未能解决你的问题,请参考以下文章

使用 case 语句计算非空列的数量

Pyspark:如何将现有非空列的元组列表作为数据框中的列值之一返回

Scala Spark,比较两个 DataFrame 并选择另一列的值

熊猫将非空值从行中获取到一个单元格中[重复]

oracle如何向空表中添加一个类型为clob的非空列

R数据框复制不同空列中的值