在 pyspark 数据框中添加新列,比较同一数据框中存在的两列

Add new column in pyspark data frame comparing two column present in same data frame

我有一个包含两列 COL_1 和 COL_2 的数据框。

我想再添加一列 COL_3,COL_3 值将取决于 COL_1 和 COL_2 的比较,如下所示 table。

当两个值相同时COL_3 = Valid

当两个值不同时COL_3 = 无效

当两者都取null时COL_3 = null

我尝试了下面的代码,但没有用。

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

首先将在读取 CSV 文件时使用 lit 函数添加具有默认值的 col3

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

现在将使用 when 函数

检查条件
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')))
```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 并在 when 函数的帮助下检查天气 COL_1 和 COL_2 是否相等或不同,我将 validinvalid 值分配给 COL_3。 如果 COL_1 和 COL_2 为空,则它将 NA 分配给 COL_3。