Apache spark PYSPARK:如何根据条件更新列中的值

Apache spark PYSPARK:如何根据条件更新列中的值,apache-spark,pyspark,Apache Spark,Pyspark,给定一个包含两列的表:DEVICEID和DEVICETYPE 如果DEVICEID中的字符串长度为5,如何更新列DEVICETYPE: from pyspark.sql.functions import * df.where(length(col("DEVICEID")) = 5).show() 使用when+否则语句并检查设备ID==5的长度更新新值 示例: df=spark.createDataFrame([('abcde',1),('abc',2)],["

给定一个包含两列的表:DEVICEID和DEVICETYPE

如果DEVICEID中的字符串长度为5,如何更新列DEVICETYPE:

from pyspark.sql.functions import *

df.where(length(col("DEVICEID")) = 5).show()

使用
when+否则
语句并检查
设备ID==5的长度
更新新值

示例:

df=spark.createDataFrame([('abcde',1),('abc',2)],["DEVICEID","DEVICETYPE"])

from pyspark.sql.functions import *

df.withColumn("new_col",when(length(col("deviceid")) ==5,lit("new_length")).otherwise(col("DEVICEID"))).show()
#+--------+----------+----------+
#|DEVICEID|DEVICETYPE|   new_col|
#+--------+----------+----------+
#|   abcde|         1|new_length|
#|     abc|         2|       abc|
#+--------+----------+----------+

df.withColumn('DEVICEID',when(col('DEVICEID'))=5,更新的_值)。否则(col('DEVICEID'))
…类似这样的事情?当DEVICEID中的长度为5时,我需要更新DEVICETYPE列,这给了我一个语法错误,我还在尝试df.withColumn('DEVICETYPE',when(col('DEVICEID')=5,更新的_值)。否则(col('DEVICEID'))NP,当有人对代码进行注释时,最好阅读文档以获得更清晰的图片(IMO):)快乐的编码快乐