如何将 gota 数据框写入 csv?
How do I write a gota dataframe to a csv?
我找到了许多通过传入 [][] 字符串写入 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() function to write to a CSV. In the gota dataframe documentation 的代码示例,没有写入 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在将它们放入结构之前以半自定义的方式。
所以我可以编写一个函数将我的结构转换为 [][] 字符串格式,但我觉得这很乏味,我确信必须有更好的方法。事实上,我确定有,因为数据帧类型有 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" 并一直引用它。
原来是我理解错了io.Writer接口,没看懂os.Create()函数是什么returns。
事实证明,代码比我想象的更简单、更容易。
这是工作代码示例:
df := dataframe.LoadStructs(file.Rows)
f, err := os.Create(outFileName)
if err != nil {
log.Fatal(err)
}
df.WriteCSV(f)
我找到了许多通过传入 [][] 字符串写入 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() function to write to a CSV. In the gota dataframe documentation 的代码示例,没有写入 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在将它们放入结构之前以半自定义的方式。
所以我可以编写一个函数将我的结构转换为 [][] 字符串格式,但我觉得这很乏味,我确信必须有更好的方法。事实上,我确定有,因为数据帧类型有 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" 并一直引用它。
原来是我理解错了io.Writer接口,没看懂os.Create()函数是什么returns。
事实证明,代码比我想象的更简单、更容易。
这是工作代码示例:
df := dataframe.LoadStructs(file.Rows)
f, err := os.Create(outFileName)
if err != nil {
log.Fatal(err)
}
df.WriteCSV(f)