我遵循这个线程,它不能完全回答我的解决方案:在熊猫中按范围加入/合并的最佳方式
我精确地认为在我的情况下我的最小/最大值是日期时间,但这没有任何问题。
接受的答案对我来说效果很好,但是我认为这可以针对我的用例进行优化。
事实上,它将创建一个连接 A 和 B df 的巨型 datframe,而我只需要 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 行,这是我所期望的。
如何在第一次操作中直接做到这一点,同时提高处理时间?
谢谢
我找到了自己的路。
我添加了系列,并在相关主题的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 秒