如何使用pyspark dataframe的withColumn动态放置when条件。?
我的pyspark数据框架如下,包含1列:- dd1= 我想在dd1中添加名为“Dept”的列,其中包含Dept ip所属的名称,因为我已经编写了一个正则表达式,使用它将在Dept列中添加值。但twist是我想要动态地放置条件。我是这样做的如何使用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
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