Skip to main content

Indexing

You can index your DataFrame with gambas's built-in indexing tools.

The data used in the example 2019.csv is UN's 2019 World Happiness Report, sourced from Kaggle.

LocRows

func (df *DataFrame) LocRows(rows ...[]interface{}) (DataFrame, error)

LocRows returns a set of rows as a new DataFrame object, given a list of labels.

You are only allowed to pass in the indices of the DataFrame as rows. For multiindex, pass in either the entire index tuple or just the first index.

Example 1: Single index

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), []string{"Country or region"})
if err != nil {
fmt.Println(err)
}

res, err := df.LocRows([]interface{}{"Canada"}, []interface{}{"United States"}, []interface{}{"Mexico"})
if err != nil {
fmt.Println(err)
}

res.Print()
Country or region    |    Overall rank    Country or region    Score    GDP per capita    Social support    Healthy life expectancy    Freedom to make life choices    Generosity    Perceptions of corruption    
Canada | 9 Canada 7.278 1.365 1.505 1.039 0.584 0.285 0.308
United States | 19 United States 6.892 1.433 1.457 0.874 0.454 0.28 0.128
Mexico | 23 Mexico 6.595 1.07 1.323 0.861 0.433 0.074 0.073

Example 2: Multiindex

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), []string{"Overall rank", "Country or region"})
if err != nil {
fmt.Println(err)
}

// this will accomplish the same thing as well:
// res, err := df.LocRows([]interface{}{9, "Canada"}, []interface{}{19, "United States"}, []interface{}{23, "Mexico"})
res, err := df.LocRows([]interface{}{9}, []interface{}{19}, []interface{}{23})
if err != nil {
fmt.Println(err)
}

res.Print()
Country or region    |    Overall rank    Country or region    Score    GDP per capita    Social support    Healthy life expectancy    Freedom to make life choices    Generosity    Perceptions of corruption    
Canada | 9 Canada 7.278 1.365 1.505 1.039 0.584 0.285 0.308
United States | 19 United States 6.892 1.433 1.457 0.874 0.454 0.28 0.128
Mexico | 23 Mexico 6.595 1.07 1.323 0.861 0.433 0.074 0.073

LocRowsItems

func (df *DataFrame) LocRowsItems(rows ...[]interface{}) ([][]interface{}, error)

LocRowsItems acts the exact same as LocRows, but returns data as [][]interface{} instead of DataFrame. For usage, refer to LocRows.

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), []string{"Country or region"})
if err != nil {
fmt.Println(err)
}

res, err := df.LocRowsItems([]interface{}{"Canada"}, []interface{}{"United States"}, []interface{}{"Mexico"})
if err != nil {
fmt.Println(err)
}

fmt.Println(res)
[[9 Canada 7.278 1.365 1.505 1.039 0.584 0.285 0.308] [19 United States 6.892 1.433 1.457 0.874 0.454 0.28 0.128] [23 Mexico 6.595 1.07 1.323 0.861 0.433 0.074 0.073]]

LocCol

func (df *DataFrame) LocCol(col string) (Series, error) 

LocCol returns a column as a new Series object.

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), nil)
if err != nil {
fmt.Println(err)
}

res, err := df.LocCol("Country or region")
if err != nil {
fmt.Println(err)
}

res.Head(5)
     |    Country or region     
0 | Finland
1 | Denmark
2 | Norway
3 | Iceland
4 | Netherlands

LocCols

func (df *DataFrame) LocCols(cols ...string) (DataFrame, error)

LocCols returns a set of columns as a new DataFrame object, given a list of labels.

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), nil)
if err != nil {
fmt.Println(err)
}

res, err := df.LocCols("Country or region", "GDP per capita", "Healthy life expectancy")
if err != nil {
fmt.Println(err)
}

res.Head(5)
     |    Country or region    GDP per capita    Healthy life expectancy    
0 | Finland 1.34 0.986
1 | Denmark 1.383 0.996
2 | Norway 1.488 1.028
3 | Iceland 1.38 1.026
4 | Netherlands 1.396 0.999

LocColsItems

func (df *DataFrame) LocColsItems(cols ...string) ([][]interface{}, error)

LocColsItems acts the exact same as LocCols, but returns data as [][]interface{} instead of DataFrame. For usage, refer to LocCols.

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), nil)
if err != nil {
fmt.Println(err)
}

res, err := df.LocColsItems("Country or region", "GDP per capita", "Healthy life expectancy")
if err != nil {
fmt.Println(err)
}

fmt.Println(res)
[[Finland Denmark Norway Iceland Netherlands ...] [1.34 1.383 1.488 1.38 1.396 ...] [0.986 0.996 1.028 1.026 0.999 ...]]

(truncated in documentation due to length constraints)

Loc

func (df *DataFrame) Loc(cols []string, rows ...[]interface{}) (DataFrame, error)

Loc indexes the DataFrame object given a slice of row and column labels, and returns the result as a new DataFrame object.

You are only allowed to pass in indices of the DataFrame as rows.

df, err := gambas.ReadCsv(filepath.Join(".", "2019.csv"), nil)
if err != nil {
fmt.Println(err)
}

res, err := df.Loc([]string{"Country or region", "GDP per capita"}, []interface{}{0}, []interface{}{1}, []interface{}{2})
if err != nil {
fmt.Println(err)
}

res.Print()
     |    Country or region    GDP per capita    
0 | Finland 1.34
1 | Denmark 1.383
2 | Norway 1.488