我有一个dataframe(invoice),它有两列firstname和lastname,我想用case类创建一个新的列fullname。下面的代码不起作用,因为fullname列不在dataframe中。
**INPUT**
| firstname | lastname |
|:-----------|------------:|
| tom | jerry |
| hank | polo |
**OUTPUT**
| firstname | lastname | fullname |
|:-----------|------------:|:------------:|
| tom | jerry | tomjerry |
| hank | polo | hankpolo |
val names = invoice.as[invoiceColumns].map(updateFields)
case class invoiceColumns (firstname :String,lastname:String,fullname:String)
def updateFields(c: invoiceColumns): invoiceColumns= {
val fullname = c.first+c.last+c.fullname
c.copy(fullname = fullname)
}
2条答案
按热度按时间ljo96ir51#
也许这是有用的-
备选方案-1
备选方案-2
yiytaume2#
有几种不同的方法。
对输入和输出都使用case类
如果可以为输入和输出定义case类,则可以使用dataset api安全地完成此操作:
仅对输出使用case类
由于在运行时检查列名,因此安全性较低:
产生相同的输出。