/
columnar_dataframe.go
49 lines (40 loc) · 1.17 KB
/
columnar_dataframe.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
package dataframe
import (
"github.com/AdikaStyle/go-df/backend"
)
type columnarDataframe struct {
backend backend.Backend
Filterable
Transformable
Aggregatable
Joinable
Printable
}
func newColumnarDataframe(backend backend.Backend) Dataframe {
df := &columnarDataframe{backend: backend}
df.Filterable = newDefaultFilterable(df)
df.Transformable = newDefaultTransformable(df)
df.Aggregatable = newDefaultAggregatable(df)
df.Joinable = newDefaultJoinable(df)
df.Printable = newDefaultPrintable(df)
return df
}
func (this *columnarDataframe) VisitRows(visitor backend.RowVisitor) Dataframe {
this.backend.ForEachRow(visitor)
return this
}
func (this *columnarDataframe) VisitColumn(visitor backend.ColumnVisitor) {
this.backend.ForEachColumn(visitor)
}
func (this *columnarDataframe) GetRowCount() int {
return this.backend.GetRowCount()
}
func (this *columnarDataframe) GetHeaders() backend.Headers {
return this.backend.GetHeaders()
}
func (this *columnarDataframe) getBackend() backend.Backend {
return this.backend
}
func (this *columnarDataframe) constructNew(headers backend.Headers) Dataframe {
return newColumnarDataframe(this.backend.ConstructNew(headers))
}