我在data frame
中有一个pyspark
,如下所示。
df.show()
+---+----+
| id|name|
+---+----+
| 1| sam|
| 2| Tim|
| 3| Jim|
| 4| sam|
+---+----+
现在我向df
添加了一个新列,如下所示
from pyspark.sql.functions import lit
from pyspark.sql.types import StringType
new_df = df.withColumn('new_column', lit(None).cast(StringType()))
现在,当我查询new_df
new_df.show()
+---+----+----------+
| id|name|new_column|
+---+----+----------+
| 1| sam| null|
| 2| Tim| null|
| 3| Jim| null|
| 4| sam| null|
+---+----+----------+
现在我想根据条件更新new_column
中的值。
我正在尝试编写以下条件,但无法这样做。
如果name
为sam
,那么new_column
应为tested
其他not_tested
if name == sam:
then update new_column to tested
else:
new_column == not_tested
如何在pyspark
中实现这一目标。
编辑 我不是在寻找if else语句,而是如何更新
中记录的值pyspark
列
答案 0 :(得分:0)
@ user9367133感谢您的联系,如果您按照我在similiar question you pointed上的答案,它的逻辑几乎相同 -
from pyspark.sql.functions import *
new_df\
.drop(new_df.new_column)\
.withColumn('new_column',when(new_df.name == "sam","tested").otherwise('not_tested'))\
.show()
如果您要立即替换正确的值,则不一定要将new_column预先添加为null。但我不确定用例,所以我把它保留在我的例子中。
希望这会有所帮助,欢呼!