代码拉取完成,页面将自动刷新
同步操作将从 王布衣/pandas 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package pandas
import (
"fmt"
"gitee.com/quant1x/pandas/stat"
)
// LoadRecords creates a new DataFrame based on the given records.
// 这个方法是从本地缓存文件读取数据的第二步, 数据从形式上只能是字符串
func LoadRecords(records [][]string, options ...LoadOption) DataFrame {
// Set the default load options
cfg := loadOptions{
defaultType: stat.SERIES_TYPE_STRING,
detectTypes: true,
hasHeader: true,
nanValues: stat.PossibleNaOfString,
}
// Set any custom load options
for _, option := range options {
option(&cfg)
}
if len(records) == 0 {
return DataFrame{Err: fmt.Errorf("load records: empty DataFrame")}
}
if cfg.hasHeader && len(records) <= 1 {
return DataFrame{Err: fmt.Errorf("load records: empty DataFrame")}
}
if cfg.names != nil && len(cfg.names) != len(records[0]) {
if len(cfg.names) > len(records[0]) {
return DataFrame{Err: fmt.Errorf("load records: too many column names")}
}
return DataFrame{Err: fmt.Errorf("load records: not enough column names")}
}
// Extract headers
headers := make([]string, len(records[0]))
if cfg.hasHeader {
headers = records[0]
records = records[1:]
}
if cfg.names != nil {
headers = cfg.names
}
types := make([]stat.Type, len(headers))
rawcols := make([][]string, len(headers))
for i, colname := range headers {
rawcol := make([]string, len(records))
for j := 0; j < len(records); j++ {
rawcol[j] = records[j][i]
// 收敛NaN的情况, 统一替换为NaN
if findInStringSlice(rawcol[j], cfg.nanValues) != -1 {
rawcol[j] = "NaN"
}
}
rawcols[i] = rawcol
t, ok := cfg.types[colname]
if !ok {
t = cfg.defaultType
if cfg.detectTypes {
if l, err := findTypeByString(rawcol); err == nil {
t = l
}
}
}
types[i] = t
}
columns := make([]stat.Series, len(headers))
for i, colname := range headers {
cols := rawcols[i]
col := NewSeries(types[i], colname, cols)
//col := NewSeriesWithType(types[i], colname, cols)
//if col.Err != nil {
// return DataFrame{Err: col.Err}
//}
columns[i] = col
}
nrows, ncols, err := checkColumnsDimensions(columns...)
if err != nil {
return DataFrame{Err: err}
}
df := DataFrame{
columns: columns,
ncols: ncols,
nrows: nrows,
}
colnames := df.Names()
fixColnames(colnames)
for i, colname := range colnames {
df.columns[i].Rename(colname)
}
return df
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。