-
Notifications
You must be signed in to change notification settings - Fork 900
/
pyspark-when-otherwise.py
54 lines (42 loc) · 1.88 KB
/
pyspark-when-otherwise.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 13 21:08:30 2020
@author: NNK
"""
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
data = [("James","","Smith","36636","M",60000),
("Michael","Rose","","40288","M",70000),
("Robert","","Williams","42114","",400000),
("Maria","Anne","Jones","39192","F",500000),
("Jen","Mary","Brown","","F",0)]
columns = ["first_name","middle_name","last_name","dob","gender","salary"]
df = spark.createDataFrame(data = data, schema = columns)
df.printSchema()
df.show(truncate=False)
# Using when otherwise
from pyspark.sql.functions import col, when
df2 = df.withColumn("new_gender", when(col("gender") == "M","Male")
.when(col("gender") == "F","Female")
.otherwise("Unknown"))
df2.show(truncate=False)
df22=df.select(col("*"), when(col("gender") == "M","Male")
.when(col("gender") == "F","Female")
.otherwise("Unknown").alias("new_gender")).show(truncate=False)
# Using case when
from pyspark.sql.functions import expr
df3 = df.withColumn("new_gender", expr("case when gender = 'M' then 'Male' " +
"when gender = 'F' then 'Female' " +
"else 'Unknown' end"))
df3.show(truncate=False)
#Using case when
df4 = df.select(col("*"), expr("case when gender = 'M' then 'Male' " +
"when gender = 'F' then 'Female' " +
"else 'Unknown' end").alias("new_gender"))
df4.show(truncate=False)
data2 = [(66, "a", "4"), (67, "a", "0"), (70, "b", "4"), (71, "d", "4")]
df5 = spark.createDataFrame(data = data2, schema = ["id", "code", "amt"])
df5.withColumn("new_column", when(col("code") == "a" | col("code") == "d", "A")
.when(col("code") == "b" & col("amt") == "4", "B")
.otherwise("A1")).show()