在gota库中使用dataframe.ReadCSV时指定分隔符

时间:2018-04-08 05:18:49

标签: go gota

我试图弄清楚如何在gota library中使用dataframe.LoadOptions来在读取CSV文件时指定分隔符。

package main

import (
    "fmt"
    "github.com/kniren/gota/dataframe"
    "io/ioutil"
    "strings"
)

func main() {
    content, _ := ioutil.ReadFile("/path/to/csv/file.csv")
    ioContent := strings.NewReader(string(content))

    df := dataframe.ReadCSV(ioContent)

    fmt.Println(df)
}

dataframe.ReadCSV函数采用类型为* dataframe.LoadOptions的options变量

我检查了dataframe.LoadOptions结构的定义并找到了以下内容:

type LoadOption func(*loadOptions)

type loadOptions struct {
    defaultType series.Type
    detectTypes bool
    hasHeader bool
    names []string
    nanValues []string
    delimiter rune
    types map[string]series.Type
}

我是Go的新手并且坚持这一点。我第一次遇到这样的定义:type LoadOption func(*loadOptions)

1 个答案:

答案 0 :(得分:2)

此库使用functional options

dataframe.ReadCSV接受任何数量的dataframe.LoadOption,其中LoadOption是一种函数类型。查看文档,了解返回LoadOption值的内容并将其传递给ReadCSV:

dataframe.ReadCSV(ioContent,
    dataframe.WithDelimiter(';'),
    dataframe.HasHeader(true),
    // etc.
)