Julia 高效的数据结构,可通过“查询”;在两者之间;输入朱莉娅

Julia 高效的数据结构,可通过“查询”;在两者之间;输入朱莉娅,julia,Julia,我有一个这样的数据库 key - value 0 10 1.2 20 2.7 25 3.5 35 ... 我想创建一个函数,检索给定连续键的关联值,例如,对于0.2或0.4,应返回10;对于[2.7,3.5]中的任何内容,应返回25,高于或等于最后一个键的所有内容应返回35 最初的数据结构是一个dataframe,我目前正在它的每一行上使用一个循环,但我想知道还有哪一个数据结构(可能在Base中)将更有效,尤其是在查询中。如果您的键已排序,则假设df是存储数据的数据帧,则这

我有一个这样的数据库

key - value
0     10
1.2   20
2.7   25
3.5   35
...
我想创建一个函数,检索给定连续键的关联值,例如,对于0.2或0.4,应返回10;对于[2.7,3.5]中的任何内容,应返回25,高于或等于最后一个键的所有内容应返回35


最初的数据结构是一个dataframe,我目前正在它的每一行上使用一个循环,但我想知道还有哪一个数据结构(可能在Base中)将更有效,尤其是在查询中。

如果您的
已排序,则假设
df
是存储数据的
数据帧,则这样的操作应该更有效:

df.value[searchsortedlast(df.key, value_you_want_to_find)]
使用屏障将其包装到函数中可能会快一点(但我想不会太快):

编辑:

根据您的范围条件,它应该是
searchsortedlast


请注意,如果您传递的
val
值小于
值的最小值,则此函数将引发错误,但如果传递的
val
值大于最后一个值,则此函数将返回最后一个值(基本上假定最后一个间隔为
[df.values[end],Inf[
。如果您希望在“边框”上有不同的行为您必须手动添加一些额外的检查。

如果您的
已排序,则假设
df
是存储数据的
数据帧,则这样做应该是有效的:

df.value[searchsortedlast(df.key, value_you_want_to_find)]
使用屏障将其包装到函数中可能会快一点(但我想不会太快):

编辑:

根据您的范围条件,它应该是
searchsortedlast


请注意,如果您传递的
val
值小于
值的最小值,则此函数将引发错误,但如果传递的
val
值大于最后一个值,则此函数将返回最后一个值(基本上假定最后一个间隔为
[df.values[end],Inf[
。如果您希望在“边框”上有不同的行为您必须手动添加一些附加检查。

谢谢,这正是我要找的….(我不知道
searchsortedlast
)谢谢,这正是我要找的….(我不知道
searchsortedlast