在 F# 中按年份索引行

index rows by year in F#

我正在 F# 上以框架形式读取我的数据,如下所示

let myannual = Frame.ReadCsv("data/annual.csv")

我的框架由时间序列列和年份列组成,我想按年份索引我的时间序列。我不能像下面那样做

 let myyears = [| for i in myannual.GetColumn<float>("yyyy").Values -> float i |] 
 let myindexedframe = myannual.IndexRows(myyears)

我该怎么办?感谢任何反馈!

ReadCsv 方法有一个可选参数 indexCol 可用于指定索引列 - 您还需要提供一个类型参数来告诉 Deedle 索引的类型是什么:

let myannual = Frame.ReadCsv<int>("data/annual.csv", indexCol="yyy")

你的方法也可行,但你需要使用 IndexRowsWith,它需要一系列新索引(最好使用 int,因为 float 是多年不精确):

let myyears = [| for i in myannual.GetColumn<float>("yyyy").Values -> int i |] 
let myindexedframe = myannual.IndexRowsWith(myyears)

IndexRows 方法仅获取列的名称(与调用 ReadCsv 时使用 indexCol 参数非常相似):

let myindexedframe = myannual.IndexRows<int>("yyyy")