Я пытаюсь сделать простой фильтр в dataframe-go
. Я адаптировался на примере Github и попытался использовать простой оператор >
в функции фильтра, но компилятор выдал ошибку invalid operation: vals["day"] > 4 (operator > not defined on interface)
(см. Мой код ниже)
ОК, поэтому я изменил тип на map[string]int64
но потом выдал ошибку: cannot convert func literal (type func(map[string]int64, int, int) (dataframe.FilterAction, error)) to type dataframe.FilterDataFrameFn
.
Я очень хорошо знаком с R DataFrame / Table и Pandas, но API dataframe-go
довольно запутан. Единственный ресурс, который я нашел, это this , но автор также заявил, что не может понять API фильтра.
Любая помощь приветствуется, спасибо!
s1 := dataframe.NewSeriesInt64("day", nil, 1, 2, 3, 4, 5, 6, 7, 8)
s2 := dataframe.NewSeriesFloat64("sales", nil, 50.3, 23.4, 56.2, nil, nil, 84.2, 72, 89)
df := dataframe.NewDataFrame(s1, s2)
// Try filtering
filterFn := dataframe.FilterDataFrameFn(
func(vals map[string]int64, row, nRows int) (dataframe.FilterAction, error) {
//func(vals map[interface{}]interface{}, row, nRows int) (dataframe.FilterAction, error) {
if vals["day"] > 4 { // <= This is where I changed things
return dataframe.KEEP, nil
}
return dataframe.DROP, nil
})
ctx := context.Background()
dt_filtered, _ := dataframe.Filter(ctx, df, filterFn)
fmt.Print(dt_filtered)