我正在尝试从我从上一个函数创建的CSV文件中的数据进行汇总。下面是该文件的一个片段:
datetime,open,high,low,close,volume
2020-11-09 00:00,69.58,137.45,69.00,100.00,273517274.00
2020-11-10 00:00,104.65,128.80,101.75,107.00,141284399.00
2020-11-11 00:00,109.00,114.45,96.76,98.42,96648953.00
2020-11-12 00:00,95.98,106.60,89.15,90.00,149794913.00
[对于上下文:这是雅虎财经的劳斯莱斯控股股价的历史价格数据。我计划使用最多 200 行]。
我面临的问题是将数据从CSV转换为float64。该函数正在尝试转换我的标题,显然不能,因为它是“无效语法”。下面是错误代码:[]stringParseFloat()
Error converting string: strconv.ParseFloat: parsing "open": invalid syntaxError converting string: strconv.ParseFloat: parsing "high": invalid syntaxError converting string: strconv.ParseFloat: parsing "low": invalid syntaxError converting string: strconv.ParseFloat: parsing "close": invalid syntaxError converting string: strconv.ParseFloat: parsing "volume": invalid syntax&{ 0 0 0 0 0}
我的代码如下,以供参考:
package main
import (
"encoding/csv"
"fmt"
"log"
"os"
"strconv"
)
const file = "./rr.csv"
// Data struct is the data from the csv file
type Data struct {
datetime string
open float64
high float64
low float64
close float64
volume float64
}
func readAmounts(r []string) (d *Data, err error) {
d = new(Data)
open := r[1]
d.open, err = strconv.ParseFloat(open, 64)
if err != nil {
fmt.Printf("Error converting string: %v", err)
}
high := r[2]
d.high, err = strconv.ParseFloat(high, 64)
if err != nil {
fmt.Printf("Error converting string: %v", err)
}
low := r[3]
d.low, err = strconv.ParseFloat(low, 64)
if err != nil {
fmt.Printf("Error converting string: %v", err)
}
close := r[4]
d.close, err = strconv.ParseFloat(close, 64)
if err != nil {
fmt.Printf("Error converting string: %v", err)
}
我只是打印数据以查看ParseFloat()是否有效,然后我将创建一个函数来对列求和。所以,我要问的是;我如何忽略标题行,只是通读数字行。
仅供参考:我读过其他答案(例如:FieldsPerRecord),但它们没有为我的具体问题工作,因为我随后试图对整个列进行求和。
紫衣仙女
慕田峪4524236
婷婷同学_
相关分类