如何根据go中的日期列对csv数据进行排序

我对 GO 完全陌生。请问,任何人都可以帮助如何根据日期列对 CSV([][]string)数据进行排序?因为数据中有重复项,所以我将其转换为映射以删除重复项并返回切片。但是通过这一步,现在数据是未排序的。


如何根据日期列对数据进行排序?有人可以帮忙吗?


删除重复项


func removeDuplicatesFromListQuote(quotes [][]string) [][]string {

dict := make(map[string][]string)

for i, val := range quotes {

    if i == 0 {

        continue

    }

    dict[val[0]] = []string{val[1], val[2], val[3], val[4], val[5]}

}


var unique [][]string

newLine := make([]string, 0)

unique = append(unique, []string{"Date", "Open", "High", "Low", "Close", "Volume"})

for key, val := range dict {

    newLine = []string{key, val[0], val[1], val[2], val[3], val[4]}

    unique = append(unique, newLine)

}

e


要排序的数据


Date,Open,High,Low,Close,Volume

05111985,0.33,0.34,0.33,0.33,26885600

12021986,0.43,0.43,0.42,0.43,33264000

11051999,1.60,1.65,1.56,1.60,114648800

03052000,4.25,4.33,3.99,4.11,122449600

01112004,3.75,3.80,3.72,3.75,150512600

19072017,150.48,151.42,149.95,151.02,20923000

17091992,1.69,1.69,1.62,1.64,43108800

28051985,0.32,0.32,0.30,0.30,127741600

24071985,0.29,0.30,0.29,0.29,42179200

06042000,4.67,4.80,4.40,4.47,64906800

13042009,17.14,17.28,17.00,17.17,97309100

26022018,176.35,179.39,176.21,178.97,38162200

15051995,1.54,1.56,1.52,1.56,98338800

23031999,1.23,1.23,1.17,1.18,103888400

11092003,1.59,1.63,1.58,1.61,53421200

14072017,147.97,149.33,147.33,149.04,20132100

07031990,1.25,1.29,1.25,1.26,51055200

06061995,1.56,1.58,1.55,1.57,78817200


慕神8447489
浏览 123回答 1
1回答

一只名叫tom的猫

您可以为 sort.Sort 添加一些方法来调用和排序您的数据。您的数据的第一列似乎是格式为 MMDDYYYY 的日期。package mainimport (    "fmt"    "sort"    "time")type CSV [][]string// Determine if one CSV line at index i comes before the line at index j.func (data CSV) Less(i, j int) bool {    dateColumnIndex := 0    date1 := data[i][dateColumnIndex]    date2 := data[j][dateColumnIndex]    timeT1, _ := time.Parse("01022006", date1)    timeT2, _ := time.Parse("01022006", date2)    return timeT1.Before(timeT2)}// Other functions required for sort.Sort.func (data CSV) Len() int {    return len(data)}func (data CSV) Swap(i, j int) {    data[i], data[j] = data[j], data[i]}func main() {    data := [][]string{        []string{"05111985", "0.33", "0.34", "0.33"},        []string{"11051999", "1.60", "1.65", "1.56"},        []string{"12021986", "0.43", "0.43", "0.42"},    }    // Sort the data in place using the methods above.    sort.Sort(CSV(data))    fmt.Println(data)}输出:[[05111985 0.33 0.34 0.33] [12021986 0.43 0.43 0.42] [11051999 1.60 1.65 1.56]].
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go