как разместить когда условие динамически с withColumn pyspark dataframe.? - PullRequest
0 голосов
/ 08 января 2020

у меня есть pyspark dataframe, как показано ниже, который содержит 1 столбец: -

dd1 =

    src
  8.8.8.8
  103.102.122.12
  192.168.9.1

Я хочу добавить столбец в dd1 имени "Dept", который содержит имя dept ip принадлежит для того, что я написал регулярное выражение, используя его добавит значение в столбце dept. Но поворот заключается в том, что я хочу разместить условие динамически. Я сделал так ..

 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

Пожалуйста, помогите мне решить эту проблему ..

Заранее спасибо.

1 Ответ

0 голосов
/ 08 января 2020

Это должно сработать:

from pyspark.sql.functions import when, regexp_extract, lit
condition = regexp_extract("src", '^192.168.9.([1-9]|1d|2[0-4])$', 1)
df.select("*", when(condition=="", lit("Public")).otherwise("CAMERA").alias("Dept")).show()
...