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

时间:2020-03-01 13:56:00

标签: pyspark pyspark-dataframes

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

enter image description here

我想再添加一列COL_3和COL_3值,具体取决于下表中对COL_1和COL_2的比较。

enter image description here

两个值相同时COL_3 =有效

两个值都不相同时COL_3 =无效

当两个值都为空时COL_3 = null

我尝试了一些下面的代码,但无法正常工作。

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

2 个答案:

答案 0 :(得分:0)

首先在读取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')))

答案 1 :(得分:0)

```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相等或不同,并为 valid 无效的值用于COL_3。 如果COL_1和COL_2为空,则它将 NA 分配给COL_3。