List 如何选择F#中的数据结构?

List 如何选择F#中的数据结构?,list,f#,deedle,List,F#,Deedle,我有一个几乎10000000行的csv文件,结构如下: date , code , ret 2001-01-01,000001,0.1 2001-01-01,000002,0.01 2001-01-02,000001,0.05 2001-01-02,000002,0.02 “日期”和“代码”字段只有一个键。我想像这样快速地对文件进行子集划分 subset(code='000001') date , code , ret 2001-01-01,000001,0.1 2001-01-02,000

我有一个几乎10000000行的csv文件,结构如下:

date , code , ret
2001-01-01,000001,0.1
2001-01-01,000002,0.01
2001-01-02,000001,0.05
2001-01-02,000002,0.02
“日期”和“代码”字段只有一个键。我想像这样快速地对文件进行子集划分

subset(code='000001')

date , code , ret
2001-01-01,000001,0.1
2001-01-02,000001,0.05


如何选择正确的数据结构以使其高效工作?

看看F#data项目中的CSVTypeProvider:


您可以使用它作为基本数据结构,轻松地将数据解析为更优化的数据结构,以便快速访问,正如@MarcinJuraszek所描述的。

我认为这不是F#特有的问题。您需要某种字典(可能有两种,一种是按日期快速查找,另一种是按代码查找)。在F#中是
map
。要做到这一点,您必须将整个文件加载到内存中。您还可以将其加载到数据库中,对代码和数据应用索引并查询该表。非常感谢。我可以使用两个字典来实现这一点。
subset(date='2001-01-01')

date , code , ret
2001-01-01,000001,0.1
2001-01-01,000002,0.01