繁体   English   中英

在 pandas 中获取最近多索引的最快方法

[英]Fastest way to get nearest multindex in pandas

我在 Pandas df1df2中有两个数据框。 dataframe dfi具有多索引xiyi

对于df1中的每一行,我想在df2中找到最接近的匹配,其中“最接近的匹配”可以由索引的一些通用 function 定义,即f(x1,y1,x2,y2)

我可以使用来自 sklearn 的标准最近邻堆栈来做到这一点,但我想知道是否有更快的方法利用 pandas 索引? 例如,在xarray中有一个sel function可以快速找到 xarray 对象之间最近的匹配,至少对于一个维度,例如


 ds2.sel(y2=ds1.coords['y1'],
         method='nearest')

由于xarray是建立在 pandas 之上的,pandas 中是否有等效的方法,它还允许用户通过一些 function 指定“最近”,超过一个索引?

我意识到可以通过交叉加入 dfs、进行一些计算、 idxmin等来复制此功能,但是这些 dfs 很大,我想避免加入它们。

如果您可以创建新列,其中包含您的计算的 output 以数字形式,您可以使用文档中描述的merge_asof功能:

pd.merge_asof(left, right, on='your_custom_field', allow_exact_matches=False)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM