【发布时间】:2015-06-01 05:30:05
【问题描述】:
我有两个列表,每个列表都填充了时间戳,list_a 和 list_b。使用 np.searchsorted 为 list_b 中的每个条目查找 list_a 中的最新条目的最佳方法是什么?结果将是一个 list_a_updated,其中 list_a_updated 中的每个 x 都直接匹配到 list_b 中其对应的(以及后来的)条目。这个问题和这个问题很相似
pandas.merge: match the nearest time stamp >= the series of timestamps
但有点不同。
让我感到尴尬的是,我不能只是如何扭转这一点,所以它会获取 = 时间戳,但我已经使用它一段时间了,它并不像看起来那么明显。我的示例代码是:
#in this code tradelist is list_b, balist is list_a
tradelist=np.array(list(filtereddflist[x][filtereddflist[x].columns[1]]))
df_filt=df_filter(filtereddflist2[x], 2, "BEST_BID" )
balist=np.array(list(df_filt[df_filt.columns[1]]))
idx=np.searchsorted(tradelist,balist)-1
mask= idx <=0
df=pd.DataFrame({"tradelist":tradelist[idx][mask],"balist":balist[mask]})
而且解决方法也不是仅仅切换不等式那么简单。
如果它有帮助,我正在处理交易和投标股票数据,并试图为每笔交易 (list_b) 找到最近的投标 (list_a),而不必诉诸 for 循环。
【问题讨论】:
-
看
np.searchsorted的side关键字参数,我想你只需要设置side='right',80%就可以了。 -
谢谢!我不太确定这与仅交换参数顺序有何不同。两者是等价的吗?
-
他们无事可做...我已经给出了完整的答案,看看是否有意义。
-
啊,是的。它做了一些完全不同的事情。你说的对。并感谢您提供完整的答案。我已经接受了。我刚刚用我的代码对其进行了测试,它可以工作。