Добавить новый столбец во фрейме данных Pyspark, сравнивая два столбца, присутствующих в одном фрейме данных - PullRequest
0 голосов
/ 01 марта 2020

У меня есть фрейм данных с двумя столбцами COL_1 и COL_2.

enter image description here

Я хочу добавить еще один столбец COL_3, и значение COL_3 будет зависеть от сравнение COL_1 и COL_2 согласно приведенной ниже таблице.

enter image description here

Когда оба значения одинаковы COL_3 = Действительный

Когда оба значения отличаются COL_3 = Неверно

Когда оба значения имеют значение NOL COL_3 = null

Я попробовал что-то ниже кода, но это не работает.

df_Input = dataframe.withColumn("COL_3", (col("COL_1") != col("COL_1")), lit("Invalid")).otherwise(lit("valid"))

Ответы [ 2 ]

0 голосов
/ 01 марта 2020
```df = df.withColumn('COL_3',\
        when((col("COL_1") == col("COL_2")), 'Valid').\
        when((col("COL_1") != col("COL_2")), 'Invalid').\
        otherwise(lit("NA")))```

Здесь я сначала добавляю один столбец COL_3 и с помощью , когда функция проверила погоду COL_1 и COL_2, равную или различную, и мне присвоены действительные и неверные значения для COL_3. Если COL_1 и COL_2 не заполнены, то NA будет присвоено COL_3.

0 голосов
/ 01 марта 2020

сначала добавит col3 со значением по умолчанию с использованием функции lit при чтении файла CSV

df = spark.read.format("csv").option("header", "true").option("delimiter","|").load('test.csv').withColumn('COL_3',lit('Invalid'))

теперь будет проверять условие с использованием when function

df = df.withColumn('COL_3', when((col("COL_1") == col("COL_1")), 'Valid').when((col("COL_1") == 'null') & (col("COL_2" == 'null')),'null').otherwise(col('COL_3')))
...