今天是中秋節連假的第二天,真驚訝我今天還坐在這邊繼續寫
今天要做的也是非常基本的處理,開始囉
為什麼會說這也是一個很常用的function呢?
當你在做資料處理的時候,很常會需要針對某個column進行處理並overwrite,或是進而新增一個額外的欄位
這時候就需要用到withColumn
下面會介紹一些常用的withColumn的用法,還有一些我自己的經驗分享,以及一些有趣的combo技,相信可以解決很多資料處理的問題
withColumn()
withColumn(ColName,col)
主要有兩個參數可以使用,ColName
: 第一個是新的columnName, 如果新的colulnName,跟原本的一樣,他就會overwrite舊的,進行更新col
:就是你要用什麼replace
情境說明:
withColumn
,後面的參數其實可以加很多邏輯去處理,像是之前有提到的regexp_replace
,when
,split
,甚至是你要做DataType的轉換,或是UDF的使用等等的function都可以放在後面做使用
所以你可能可以在同一行裡面做一些很複雜的操作~
e.g. :
to_timestamp()
,df.withColumn('Created_Date',to_timestamp(col("Created_Date")))
- UDF :
df.withColumn(i, make_someColNull_udf(lit(i),col('Levels_handle'),col(i)))
rdd = sc.parallelize(
[
("drink", 2, "Carmen",23,'Female'),
("movie", 2, "Juliette",16,'Female'),
("writing", 2, "Don José",25,'Male'),
("sleep", 2, "Escamillo",30,'Male'),
("play", 2, "Roméo",18,'Male')
]
)
df = rdd.toDF(["Thing", "Hour", "Name","Age",'Gender'])
df.show()
df.withColumn('Age',col('Age')+10).show()
'''
+---------+---+------------+Original Data+---------+---+------------+
df.show()
+-------+----+---------+---+------+
| Thing|Hour| Name|Age|Gender|
+-------+----+---------+---+------+
| drink| 2| Carmen| 23|Female|
| movie| 2| Juliette| 16|Female|
|writing| 2| Don José| 25| Male|
| sleep| 2|Escamillo| 30| Male|
| play| 2| Roméo| 18| Male|
+-------+----+---------+---+------+
+---------+---+------------+Original Data+---------+---+------------+
+---------+---+------------+OUTPUT+---------+---+------------+
df.withColumn('Age',col('Age')+10).show()
+-------+----+---------+---+------+
| Thing|Hour| Name|Age|Gender|
+-------+----+---------+---+------+
| drink| 2| Carmen| 33|Female|
| movie| 2| Juliette| 26|Female|
|writing| 2| Don José| 35| Male|
| sleep| 2|Escamillo| 40| Male|
| play| 2| Roméo| 28| Male|
+-------+----+---------+---+------+
+---------+---+------------+OUTPUT+---------+---+------------+
'''
withColumns()
- 待更新