【发布时间】:2019-01-21 15:23:15
【问题描述】:
我有两个数据帧 list1 和 list2,每个数据帧都有不同数量的随机索引行。 list1 有 ~240,000 行,而 list2 有 ~390,000 行。它们根据 ['time'] 列从最早时间到最晚时间排序。它们大致是这样的:
列表1
time rates
299 09:31 1.30
1230 10:34 2.42
32 13:40 1.49
... ...
list2
time Symbol IV
78 10:31 aqb 7
121 10:59 cdd 3
3240 11:19 oty 4
393 13:54 zqb 8
44 14:13 omu 1
...
list2 上的每一行都有一个 ['time'] 值。我希望 list2 中的每一行都具有来自 list1 的最新 ['rates'] 值,该值不晚于其自己的 ['time'] 值。在那之前,可以将相同的 ['rates'] 值填充到 list2 中(对不起,我知道这很混乱)。下面显示了带有解释的所需结果的示例。
想要的结果
time Symbol IV rates
78 10:31 aqb 7 1.30
121 10:59 cdd 3 2.42
3240 11:19 oty 4 2.42
393 13:54 zqb 8 1.49
44 14:13 omu 1 1.49
list1 的第一行是从 9:31 开始的,第二行是从 10:34 开始的。 list2 中的第一行位于 10:31,因此应填充 9:31 的 ['rates'] 值,而不是 10:34 的 rates 值,因为 10:34 晚于 10:31。 list2 中的下一行是 10:59。 list1 中不是在 10:59 之后的最后一行是 10:34,所以填写 10:34 的值 2.42。list2 中的第三行与 11:19 相同。
如果不使用 for 循环来缓慢地遍历每一行并执行上面的一堆 if else 检查,如果每个数据帧中只有几十万行,我该如何实现这一点?谢谢!
【问题讨论】:
标签: python pandas dataframe calculated-columns