【发布时间】:2021-07-06 18:15:26
【问题描述】:
首先,我在 IntelliJ 上使用 Scala。有这个:
type | age
electric | 30
diesel | 24
gasoline | 28
diesel | 31
我想定义一个函数来获取“age”列的平均值,不包括“electric”类型。我不知道如何过滤一列,然后在维护过滤器的另一列中操作。现在,我做了这个:
def nonelectric (c: Seq[Df]): Double = {
val cars = c.map(k => k.type)
val nonelectriccars = cars.filterNot(cars=> cars == "electric")
var a:Double = 0.0
for (i <- nonelectriccars){
a += i
}
a/nonelectriccars.size.toDouble
}
但是,当然,我无法从“字符串”类型中得到平均值。如何修复我的代码?
【问题讨论】:
-
不要在
filterNot()之前删除age信息(就像在第一个.map()中所做的那样)。过滤car => car.type == "electric"。这样nonelectriccars仍然有你在for循环中需要的信息(无论你是map(car => car.age)还是a += i.age)。 -
谢谢,我如何选择
.map()中的两列? -
假设您有超过 2 列,您根本不需要删除任何其他列(至少在您的问题中不是)。不过,如果您只想保留几列,
.map(car => (car.type, car.age))应该可以正常工作。
标签: scala