我发现了许多通过传递[] []字符串来写入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数据框。WriteCSV()函数写入CSV。在gota {{3} },没有写csv的示例,但是有从csv读取的示例。
数据框函数WriteCSV()需要io.Writer {}接口的输入。我不确定该如何满足。
以下内容无效
writer := csv.NewWriter(f)
df.WriteCSV(writer) // TODO This writer needs to be a []byte writer
我已经为此工作了一段时间。有人有任何线索吗?
我已经考虑将我的gota数据框转换为[] []字符串类型,但这有点不方便,因为我使用包的LoadStructs()函数将数据放入了gota数据框,并且我已经在将它们放入结构之前的半定制方式。
所以我可以编写一个函数来将结构转换为[] []字符串格式,但是我觉得那很繁琐,而且我相信必须有更好的方法。实际上,我敢肯定是因为数据框类型具有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”,并且一直在引用它。
答案 0 :(得分:1)
因此,事实证明我误解了io.Writer接口,但我不明白os.Create()函数返回什么。
原来的代码比我想象的还要简单和容易。
这是工作代码示例:
df := dataframe.LoadStructs(file.Rows)
f, err := os.Create(outFileName)
if err != nil {
log.Fatal(err)
}
df.WriteCSV(f)