根据另一个 df 中最小/最大日期范围内的日期合并/加入熊猫



我遵循这个线程,它不能完全回答我的解决方案:在熊猫中按范围加入/合并的最佳方式

我精确地认为在我的情况下我的最小/最大值是日期时间,但这没有任何问题。

接受的答案对我来说效果很好,但是我认为这可以针对我的用例进行优化。

事实上,它将创建一个连接 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 秒

最新更新