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,将非空列的值复制到新列中的主要内容,如果未能解决你的问题,请参考以下文章
Pyspark:如何将现有非空列的元组列表作为数据框中的列值之一返回