我想返回直到并包括某个键的每个值。
虽然我可以生成每个这样的 key 并将它们全部放入 Get
中,但我怀疑这会低效地搜索每个 key 的值。
受 this 答案的启发,我提出了以下内容
let getAllUpTo key (frame:Frame<'key,'col>) : Frame<'key, 'col> =
let endRng = frame.RowIndex.Locate key
let startRng = frame.RowIndex.KeyRange |> fst |> frame.RowIndex.Locate
let fixedRange = RangeRestriction.Fixed (startRng, endRng)
frame.GetAddressRange fixedRange
是否有内置方法可以有效地完成此操作?
最佳答案
如果要访问具有指定开始/结束键的数据帧的子范围,可以使用df.Rows.[ ... ]
索引器来执行此操作。假设我们有一些按(排序)日期索引的数据:
let s1 = series [
let rnd = Random()
for d in 0 .. 365 ->
DateTime(2020, 1, 1).AddDays(float d) => rnd.Next() ]
let df = frame [ "S1" => s1 ]
要获取在特定日期开始/结束的数据帧的一部分,您可以使用:
// Get all rows from 1 June (inclusive)
df.Rows.[DateTime(2020, 6, 1) ..]
// Get all rows until 1 June (inclusive)
df.Rows.[.. DateTime(2020, 6, 1)]
您使用的 API 本质上就是它的幕后功能 - 但您使用的是非常低级的操作,通常不需要在用户代码中使用。
关于f# - 如何使用 Deedle 获取某个键及以下键的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64849252/