我发现了许多通过传入 [][] 字符串来写入 CSV 的代码示例。(如下所示):
package main
import (
"os"
"log"
"encoding/csv"
)
var data = [][]string{
{"Row 1", "30"},
{"Row 2", "60"},
{"Row 3", "90"}}
func main() {
file, err := os.Create("tutorials_technology.csv")
if err != nil {
log.Fatal(err)
}
defer file.Close()
w := csv.NewWriter(file)
for _, value := range data {
if err := w.Write(value); err != nil {
log.Fatalln("Error writing record to csv: ", err)
}
}
w.Flush()
}
但是,我还没有找到任何代码示例来说明如何使用gota dataframe.WriteCSV() 函数写入 CSV。在 gota数据框文档中,没有写入 csv 的示例,但有一个从 csv 读取的示例。
数据帧函数 WriteCSV() 需要 io.Writer{} 接口的输入。我不知道如何满足这一点。
以下没有工作
writer := csv.NewWriter(f)
df.WriteCSV(writer) // TODO This writer needs to be a []byte writer
我已经为此工作了很长一段时间。有没有人有任何线索?
我已经考虑将我的 gota 数据框转换为 [][] 字符串类型,但这有点不方便,因为我使用包的 LoadStructs() 函数将我的数据放入了 gota 数据框,并且我在半自定义中读取了一些 CSV在将它们放入结构之前的方式。
所以我可以编写一个函数来将我的结构转换为 [][]string 格式,但我觉得这很乏味,我相信一定有更好的方法。事实上,我敢肯定是因为数据帧类型有 WriteCSV() 方法,但我只是还没弄清楚如何使用它。
这是我的结构
type CsvLine struct {
Index int
Date string
Symbol string
Open float64
High float64
Low float64
Close float64
// Volume float64
// Market_Cap float64
}
type File struct {
Rows []CsvLine
}
免责声明:我是一个 golang 新手。我只使用 Go 几个月,这是我第一次尝试写入文件。我与 io.Writer 接口的交互不多,但我听说它非常有用。
是的,我经常看 Golang.org 的博客,我读过“Effective Go”,我一直在引用它。