CSV类型提供程序在F#interactive中找不到列
假设我有一个CSV文件,它的标题包含“人口”和“利润”列,我想在F#interactive中使用它。我有以下代码:CSV类型提供程序在F#interactive中找不到列,f#,type-providers,f#-interactive,f#-data,F#,Type Providers,F# Interactive,F# Data,假设我有一个CSV文件,它的标题包含“人口”和“利润”列,我想在F#interactive中使用它。我有以下代码: #r "../packages/FSharp.Data.1.1.10/lib/net40/FSharp.Data.dll" open FSharp.Data // load csv header let cities = new CsvProvider<"cities.csv">() // how to reach data let firstRow = citi
#r "../packages/FSharp.Data.1.1.10/lib/net40/FSharp.Data.dll"
open FSharp.Data
// load csv header
let cities = new CsvProvider<"cities.csv">()
// how to reach data
let firstRow = cities.Data |> Seq.head
let firstPopulation = firstRow.Population
let firstProfit = firstRow.Profit
#r.。/packages/FSharp.Data.1.1.10/lib/net40/FSharp.Data.dll”
打开FSharp.Data
//加载csv头文件
let cities=新的CsvProvider()
//如何获取数据
设第一行=cities.Data |>Seq.head
让firstPopulation=firstRow.Population
让firstProfit=firstRow.Profit
我从F#interactive得到一个错误:
错误FS0039:未定义字段、构造函数或成员“填充”
这似乎让我感到困惑,因为VS中的intellisense通过CSV类型的提供程序从我的数据中获取此列没有问题
另外,我尝试用相同的类型提供程序创建一个程序,结果一切正常。像这样:
open FSharp.Data
[<EntryPoint>]
let main argv =
use file = System.IO.File.CreateText("result.txt")
let csv = new CsvProvider<"cities.csv">()
for record in csv.Data do
fprintfn file "%A" record.Population
0
打开FSharp.Data
[]
让主argv=
使用file=System.IO.file.CreateText(“result.txt”)
让csv=新CsvProvider()
用于csv中的记录。数据do
fprintfn文件“%A”记录。填充
0
我错过什么了吗?谢谢你的回答 试试这段代码
let Cities = new CsvProvider<"cities.csv">()
let cities = new Cities()
let firstRow = cities.Rows |> Seq.head
let Cities=new CsvProvider()
让城市=新城市
让firstRow=城市。行|>Seq.head
能否尝试使用CSV文件的完整路径?(有时候F#Interactive会对路径感到困惑…)这很奇怪。你确定你已经把所有的电话都发到fsi了吗?我刚试过类似的方法,但效果很好。您使用的是什么版本的VS?如果路径有问题,它将给出一个明确的错误,除非通过更改,在其他地方有一个cities.csv没有人口列。如果您首先命名列,例如xyzy
,通过尝试执行锁定TP到FSI会话,则可能会发生这种情况,然后将列重命名为Population
,并尝试在同一FSI会话中再次执行。然后VS(和Intellisense)中的TP实例将知道属性名称的更改,但绑定FSI的实例不会。尝试重置FSI会话并重复尝试运行。Tomas,我已将路径更改为完整路径,它将开始工作。同样,你是对的,最初是不同的列名。