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
)