我正在读一列,如果在那列中有一个“y”,我将用“y”填充新列,否则我将用“n”填充新列。
+--------------+---------------------+-------------------+
|Date | Value | HasChanged |
+--------------+---------------------+-------------------+
|2020-12-14 | N | Y |
|2020-12-14 | Y | Y |
|2020-12-14 | N | Y |
|2020-12-14 | N | Y |
+--------------+---------------------+-------------------+
|Date | Value | HasChanged |
+--------------+---------------------+-------------------+
|2020-12-14 | N | N |
|2020-12-14 | N | N |
|2020-12-14 | N | N |
|2020-12-14 | N | N |
我正在尝试:
val df1 = df.withColumn("HasChanged", when(Value === "Y"), lit("Y")).otherwise("N")))
但是只改变有y的行,我想要的是改变整个列。我该怎么做?
2条答案
按热度按时间5gfr0r5j1#
您需要检查所有行中的value=y。您可以使用窗口上比较布尔值的最大值来实现这一点,如果一行或多行为true,则为true;如果每行为false,则为false。
nfg76nw02#
你不需要
when
实际上,你可以用max
作为Y > N
: