如何使用pyspark dataframe的withColumn动态放置when条件。?

如何使用pyspark dataframe的withColumn动态放置when条件。?,dataframe,pyspark,pyspark-dataframes,Dataframe,Pyspark,Pyspark Dataframes,我的pyspark数据框架如下,包含1列:- dd1= 我想在dd1中添加名为“Dept”的列,其中包含Dept ip所属的名称,因为我已经编写了一个正则表达式,使用它将在Dept列中添加值。但twist是我想要动态地放置条件。我是这样做的 test="when(dd1.src.rlike('^192.168.9.([1-9]|1d|2[0-4])$'),'CAMERA').otherwise('Public')" dd2=dd1.withColumn("Dept",{}).format(tes

我的pyspark数据框架如下,包含1列:-

dd1=

我想在dd1中添加名为“Dept”的列,其中包含Dept ip所属的名称,因为我已经编写了一个正则表达式,使用它将在Dept列中添加值。但twist是我想要动态地放置条件。我是这样做的

test="when(dd1.src.rlike('^192.168.9.([1-9]|1d|2[0-4])$'),'CAMERA').otherwise('Public')"
dd2=dd1.withColumn("Dept",{}).format(test)
但它给我的错误是,列应该是列

但是当我用下面这样的硬代码来做的时候,它工作得很好

 dd2=dd1.withColumn("Dept",when(dd1.src.rlike('^192.168.9.([1-9]|1d|2[0-4])$'),'CAMERA').otherwise('Public'))
预期产出:

  src                Dept
  8.8.8.8          Public
  103.102.122.12   Public
  192.168.9.1      CAMERA
关于这个问题,请帮助我


提前感谢。

这应该可以做到:

从pyspark.sql.functions导入时,regexp\u extract,lit
条件=regexp|u extract(“src”,“^192.168.9.([1-9]| 1d | 2[0-4])$”,1)
df.选择(“*”,当(条件==”,亮起(“公共”)。否则(“相机”)。别名(“部门”)。显示()
  src                Dept
  8.8.8.8          Public
  103.102.122.12   Public
  192.168.9.1      CAMERA