scala - 合并可能为空的数据框列表
问题描述
我有以下代码:
val dataFrames: List[DataFrame] = [...]
// TODO There has to be a better way to do lines below.
val salesOrderDF: Option[sql.DataFrame] =
if (dataFrames.length > 1) {
Some(dataFrames.reduceRight(_.union(_)))
} else if (dataFrames.length == 1) {
Some(dataFrames.head)
} else {
None
}
有一个更好的方法吗?看起来if
和else if
案例可以以某种方式结合起来。
解决方案
您不需要else if
,reduce
带有单个元素的 a 只会返回该元素。如果您不想使用 if-else,则可以使用模式匹配检查列表是否为空。
val salesOrderDF: Option[sql.DataFrame] = dataFrames match {
case Nil => None
case nonEmptyDfs => Some(nonEmptyDfs.reduce(_ union _))
}
推荐阅读
- r - Names of nested list containing dots (e.g. "c.2)
- websocket - Quarkus: Unable to open web socket connection when i have custom http root path
- c++ - How can you emplace directly a mapped value into an unordered_map?
- javascript - How to do recursive tree array function?
- python - 为特定列中的每个唯一值创建所有其他列的列
- java - Intellij Idea 全文搜索仅在单元和集成测试类中?
- ios - 更改约束的第二项会将常量更改为负值
- symfony4 - 仅上传 PDF 文件时出现 CORS 问题
- azure - 带有 MessageReceiver 和 .NET 5 的 Azure 函数?
- asp.net-mvc - mvc中的布局控制器,不确定实现