嗨,我有下面的dataframe,它有countries列以及多个其他列和多个行。我想写一个泛型函数(因为在多个地方使用),可以在withcolumn中使用它来创建一个新列。
输入
| countries |
|------------|
| RFRA |
| BRES |
| EAST |
| RUSS |
| .... |
输出
| countries |
|-----------|
| FRA |
| BRA |
| POL |
| RUS |
| ... |
下面是我的代码,当我把countries列传递给函数时,无法用字符串计算列。如何从列中提取值,并使用指定的字符串值进行计算,然后作为列返回。
val df = sample.withColumn("renamedcountries", replace($"countries"))
def replace(countries: Column) :Column = {
val Updated = countries match {
case "RFRA" => "FRA"
case "BRES" => "BRA"
case "RESP" => "ESP"
case "RBEL" => "BEL"
case "RGRB" => "GBR"
case "RALL" => "DEU"
case "MARO" => "MAR"
case "RPOR" => "PRT"
case _ => "unknown"
}
Updated
}
3条答案
按热度按时间xwmevbvl1#
将函数逻辑 Package 为
udf
叫这个udf
来自不同的地方。ebdffaop2#
给你
typedLit
,因此每当发生更改时,只更新map
在方法上,wf82jlnq3#
应将其定义为可重用表达式:
也可以将修改打包到Map中,并在以下表达式中使用: