Golang中DataFrame系列0的索引错误:未知索引模式问题解析
Golang中DataFrame系列0的索引错误:未知索引模式问题解析
map[0:DataFrame错误:系列0错误:索引错误:未知索引模式 1:DataFrame错误:系列0错误:索引错误:未知索引模式]
package main
import (
"fmt"
"log"
"os"
"github.com/go-gota/gota/dataframe"
)
func main() {
fileOpen, err := os.Open("./advertising.csv")
if err != nil {
log.Fatal(err)
}
CSVRead := dataframe.ReadCSV(fileOpen)
trainData := CSVRead.Nrow() / 5
testData := (CSVRead.Nrow() * 4) / 5
if trainData+testData < CSVRead.Nrow() {
trainData++
}
trainDf := make([]float64, trainData)
testDf := make([]float64, testData)
for i := 0; i < trainData; i++ {
trainDf[i] = float64(i)
}
for i := 0; i < testData; i++ {
testDf[i] = float64(trainData) + float64(i)
}
dfTrain := CSVRead.Subset(trainDf)
dfTest := CSVRead.Subset(testDf)
// CSVName := []string{"train.csv", "test.csv"}
setMap := map[int]dataframe.DataFrame{
0: dfTrain,
1: dfTest,
}
fmt.Println(setMap)
// for i, setName := range CSVName {
// f, err := os.Create(setName)
// if err != nil {
// log.Fatal(err)
// }
// writer := bufio.NewWriter(f)
// if err := setMap[float64(i)].WriteCSV(writer); err != nil {
// fmt.Println(err)
// }
// }
}
更多关于Golang中DataFrame系列0的索引错误:未知索引模式问题解析的实战教程也可以访问 https://www.itying.com/category-94-b0.html
2 回复
sean@debaspirian:~/gopath/src/forum.golangbridge.org/map-0-dataframe-error-error-on-series-0-indexing-error-unknown-indexing-mode-1-dataframe-error-error-on-series-0-indexing-error-unknown-indexing-mode_19104$ go run ./main.go
2020/05/26 16:43:51 open ./advertising.csv: no such file or directory
exit status 1
更多关于Golang中DataFrame系列0的索引错误:未知索引模式问题解析的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这个错误是因为在使用 gota 库的 Subset() 方法时,传入的索引切片类型不正确。Subset() 方法期望接收的是 []int 类型的索引切片,但你传入了 []float64 类型。
以下是修正后的代码:
package main
import (
"fmt"
"log"
"os"
"github.com/go-gota/gota/dataframe"
)
func main() {
fileOpen, err := os.Open("./advertising.csv")
if err != nil {
log.Fatal(err)
}
CSVRead := dataframe.ReadCSV(fileOpen)
trainData := CSVRead.Nrow() / 5
testData := (CSVRead.Nrow() * 4) / 5
if trainData+testData < CSVRead.Nrow() {
trainData++
}
// 修正:使用 []int 类型而不是 []float64
trainDf := make([]int, trainData)
testDf := make([]int, testData)
for i := 0; i < trainData; i++ {
trainDf[i] = i // 直接使用 int 类型
}
for i := 0; i < testData; i++ {
testDf[i] = trainData + i // 直接使用 int 类型
}
dfTrain := CSVRead.Subset(trainDf)
dfTest := CSVRead.Subset(testDf)
setMap := map[int]dataframe.DataFrame{
0: dfTrain,
1: dfTest,
}
fmt.Println(setMap)
}
如果你确实需要使用浮点数索引,可以先将它们转换为整数:
// 如果需要从 float64 转换
trainDf := make([]int, trainData)
testDf := make([]int, testData)
for i := 0; i < trainData; i++ {
trainDf[i] = int(float64(i)) // 显式转换
}
for i := 0; i < testData; i++ {
testDf[i] = int(float64(trainData) + float64(i)) // 显式转换
}
gota 库的 Subset() 方法签名如下:
func (df DataFrame) Subset(indexes interface{}) DataFrame
它支持 []int 类型的索引,但不支持 []float64 类型。这就是出现 “索引错误:未知索引模式” 错误的原因。

