在快速 DataFrame 中前向填充或后向填充 nil 值

问题描述 投票:0回答:1

寻找一种在快速 DataFrame 中转发或回填 nil 值的方法。我已经找到了一种方法来向前填充一个零值,但不能连续填充多个零值。我认为 swift 没有内置这个功能?

这是我针对一个零值前向填充提出的解决方案:

var pre: Double? = nil
dataframe.transformColumn("columnName") { (thisElement:Double?) in
    if let thisElement {
        pre = thisElement
        return thisElement
    }
    return pre
}
swift dataframe
1个回答
0
投票

您应该得到一个键入的列,

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)
© www.soinside.com 2019 - 2024. All rights reserved.