我有一个大约300万行的数据帧,看起来像:
date size price
0 2018-08-01 100 220
1 2018-08-01 110 245
2 2018-08-01 125 250
3 2018-08-02 110 210
4 2018-08-02 120 230
5 2018-08-02 150 260
6 2018-08-03 115 200
对于每一行,它是一个项目的事务。我们有交易日期,商品的大小和价格。在
现在我想添加一个名为avg_price的列,这样一个事务/行的平均价格是最后一天的k个事务的平均值,这些事务的大小与这个最接近(非常类似k近邻的概念)。在
例如,当k=2时,上面最后一行的平均价格应该是(210+230)/2=220,因为最近的两个交易的大小分别是110和120,对应的价格是210和230。在
预期产出应为:
^{pr2}$我编写了一个for循环来遍历每一行,首先挑选出最后一天的所有事务,然后根据大小的差异进行排序,并计算前k项的平均值。然而,正如预期的那样,这是极其缓慢的。有人能指出一种更“矢量化”的方法吗?谢谢。在
更新:每天的交易数量不是固定的,大约在300左右。在
我不确定您的预期输出是什么,但是如果您想找到具有多个事务的日期上最接近大小的平均值,您可以这样做。如果您正在寻找其他内容,请提供预期输出:
我调用了} 所需的数据
dfa
原始数据帧。首先在dfb
中创建以后^{您可以使用
^{pr2}$merge_asof
,通过date
和nearest size
(使用该方法需要sort_values
):结果是
dfa
:相关问题 更多 >
编程相关推荐