Dataframe 如何封送、解组或转换对象,同时避免在golang中键入
我正在编写将Google Sheets与dataframe sdk集成的代码:。此代码每次在“df:=dataframe.LoadRecords(values)”时都会导致死机。当我使用调试器时,它显示一种恐慌。watcher中的所有内容都完全按照预期显示my[][]字符串中的值。如果有更好的方法将表格单元格转换为[][]字符串,请发表评论Dataframe 如何封送、解组或转换对象,同时避免在golang中键入,dataframe,go,google-sheets-api,Dataframe,Go,Google Sheets Api,我正在编写将Google Sheets与dataframe sdk集成的代码:。此代码每次在“df:=dataframe.LoadRecords(values)”时都会导致死机。当我使用调试器时,它显示一种恐慌。watcher中的所有内容都完全按照预期显示my[][]字符串中的值。如果有更好的方法将表格单元格转换为[][]字符串,请发表评论 package main import ( "bitbucket.org/gosheets" "fmt" "github.com/
package main
import (
"bitbucket.org/gosheets"
"fmt"
"github.com/kniren/gota/dataframe"
"reflect"
)
func main() {
sheetdata := gosheets.Setup()
// row1 is column names
fmt.Println(reflect.TypeOf(sheetdata.Values))
values := [][]string{}
//sheetdata.Values.(*sheets.ValueRange)
fmt.Sprintln(sheetdata.Values)
for _, row := range sheetdata.Values.Values {
sr := []string{}
for i, cell := range row {
//capping columns at 5 for starters
if i >= 5 {
break
}
sr = append(sr, fmt.Sprint(cell))
}
fmt.Sprintln(row)
values = append(values, sr)
//values = append(values, fmt.Sprintln(row))
}
//opts := dataframe.LoadOption{detectTypes: false}
df := dataframe.LoadRecords(values)
//df := dataframe.ReadCSV(sheetdata.Values)
//fmt.Println(sheetdata.Values)
fmt.Println(df.Names())
}
尝试提供一个可运行的示例,因为它使调试更容易。这看起来像是使用了私有代码,但您应该能够在不使用gosheets库的情况下通过测试输入进行复制 因此,以sheetdata为例尝试此操作会产生恐慌:
sheetdata := [][]string{{"1", "2", "3", "4", "5"}, {"1", "2", "3"}}
因此,如果您的错误是:
panic: runtime error: index out of range
github.com/kniren/gota/dataframe.LoadRecords(0xc420058060, 0x2, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, ...)
github.com/kniren/gota/dataframe/dataframe.go:693 +0xc53
您的数据的标题字段可能比下面的行长(假设它正在查看csv数据)。这一假设已被证实,LoadRecords应该真正检查并返回一个错误,而不是死机。什么是死机,包括堆栈跟踪?