/
DataFrames.go
57 lines (44 loc) · 1.2 KB
/
DataFrames.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package dataframes
import (
"fmt"
"github.com/go-gota/gota/dataframe"
"github.com/go-gota/gota/series"
"github.com/tobgu/qframe"
)
type DataFrames struct {
*qframe.QFrame
dataframe.DataFrame
}
func (dataframe DataFrames) Columns() []string {
values := dataframe.DataFrame.Names()
return values
}
func (dataframe *DataFrames) FillNa(fillString string) {
//TODO - make this an explicit function - wrap around series? or review alternative implemtations.
var replaceSeriesNullWithDefaultNullValue = series.MapFunction(func(element series.Element) series.Element {
if element.IsNA() || len(element.String()) == 0 {
switch element.Type() {
case series.String:
element.Set(fillString)
return element
case series.Int:
element.Set(0)
return element
case series.Float:
element.Set(0)
return element
case series.Bool:
element.Set(false)
return element
}
}
return element
})
dataframe_columns :=
dataframe.Columns()
for _, dataframe_column := range dataframe_columns {
newSeries := dataframe.DataFrame.Col(dataframe_column).Map(replaceSeriesNullWithDefaultNullValue)
dataframe.DataFrame = dataframe.Mutate(newSeries)
fmt.Println(newSeries)
}
}