我遵循的这个线程无法完全回答我的解决方案:Best way to join / merge by range in pandas
我确定我的最小/最大是DateTime,但这可以正常工作。
可接受的答案对我来说很好,但是我认为可以针对我的用例进行优化。
实际上,它将创建一个巨型datframe,该巨型datframe将A和B df连接起来,而我只需要A_id和B_id完全匹配的行。
我原来的df有79k行。处理完之后
C = pd.DataFrame(
np.column_stack([A.values[i], B.values[j]]),
columns=A.columns.append(B.columns)
)
我的df为2.3 m行,当我仅保留C[C['A_id'] == C['B_id']]
时,它会返回到我期望的74k行。
如何在第一次操作中直接进行操作,同时改善处理时间?
谢谢
答案 0 :(得分:0)
我找到了方向。
我添加了系列,并在相关主题的i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh))
中添加了条件
现在我有
a = A.A_value.values
aId = A.A_id.values
bId = B.B_id.values
bh = B.B_high.values
bl = B.B_low.values
i, j = np.where((a[:, None] >= bl) & (a[:, None] <= bh) & (aId[:, None] == bId)
对于我的80k行,这几乎是瞬时的,而之前花了3秒