我和spark和Pypark一起工作。我正在尝试实现与以下伪代码等效的结果:
df = df.withColumn('new_column',
IF fruit1 == fruit2 THEN 1, ELSE 0. IF fruit1 IS NULL OR fruit2 IS NULL 3.)
我尝试在pyspark中这样做,但是我不确定语法。有什么建议吗?我看了看 expr()
但却没能成功。
请注意 df
是一个 pyspark.sql.dataframe.DataFrame
.
3条答案
按热度按时间34gzjxbg1#
有几种有效的方法来实现这一点。让我们从所需的导入开始:
你可以用Hive
IF
expr内函数:或者
when
+otherwise
:最后你可以使用以下技巧:
示例数据:
可以按如下方式使用:
结果是:
n3h0vuf22#
pyspark中的withcolumn函数允许您创建一个带有条件的新变量,添加when和others函数,这样您就拥有了一个正常工作的if-then-else结构。对于所有这些,您需要导入sparksql函数,因为您将看到,如果没有col()函数,下面的代码将无法工作。在第一位中,我们声明了一个新列-“new column”,然后给出when函数中包含的条件(即,fruit1==fruit2),如果条件为真,则给出1,如果为true,则控件将转到otherwise,后者使用isnull()函数处理第二个条件(水果1或水果2为null),如果返回true 3,如果为false,则再次检查otherwise,并给出0作为答案。
bmvo0sr53#
您需要使用如下自定义项