寻找一种在快速 DataFrame 中转发或回填 nil 值的方法。我已经找到了一种方法来向前填充一个零值,但不能连续填充多个零值。我认为 swift 没有内置这个功能?
这是我针对一个零值前向填充提出的解决方案:
var pre: Double? = nil
dataframe.transformColumn("columnName") { (thisElement:Double?) in
if let thisElement {
pre = thisElement
return thisElement
}
return pre
}
Column<T>
。这是一个可变的双向集合,因此您可以按照您想要的方向进行迭代。
extension Column {
mutating func backfill() {
var index = endIndex
var prev: Element = nil
while index != self.startIndex {
formIndex(before: &index)
if self[index] != nil {
prev = self[index]
} else {
self[index] = prev
}
}
}
mutating func forwardFill() {
var index = startIndex
var prev: Element = nil
while index != self.endIndex {
if self[index] != nil {
prev = self[index]
} else {
self[index] = prev
}
formIndex(after: &index)
}
}
}
用途:
var df: DataFrame = ["Foo": [1, 2, nil, 3]]
df["Foo", Int.self].backfill()
print(df)