(有效地)在多个数据帧上递归地迭代

2024-10-05 10:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本上我是在处理大量的市场数据(100000行)。数据集列的简化版本如下所示:

[Timestamp] [Price] [Shares] [orders] [side]

111.239 $23.28 200 2 B

111.240 $23.59 200 1 S

等等,这些数据是什么出来后,我们的市场解析软件提供了一个pcap文件。现在,我需要比较来自两个不同来源的相同市场数据的输出,以确保我们的市场数据解析器正常工作,而不是放弃订单或行为不一致。唯一的问题是时间戳略有不同,因为数据来自两个不同的来源。你知道吗

因此,我目前的方法是将这些数据集实现为字典列表,每个字典表示这些顺序中的一个。我有字典A和字典B,每一个代表两个源中的一个,并且每个都按时间戳排序。然后我选择一个“模糊因子”的时间,在这个例子中我将使用2秒。下面是我如何在psedou代码中进行比较:

for item1 in dictionaryA:
    for item 2 in dictionaryB
        if the item2[timestamp] is over 2 seconds before item1[timestamp]:
            remove item from dictionaryB

        elif item2[timestamp] is over 2 seconds after item1[timestamp]:
            mark item1 as not matched
            break           

        else: # We are in 2 second fuzz factor:
            compare the items, if a match is found:
                Mark item 1 in dictionaryA as matched
                Remove item2 from dictionary
                break

正如你所见,我在循环浏览字典A的过程中不断地从字典B中删除条目,从而加快了处理速度。因为大多数条目都匹配,所以这大大加快了处理速度。但是我不知道如何在熊猫身上做这样的事情。apply()函数似乎是遍历数据集的最快方法,但它会遍历整个数据集,直到满足特定的条件,就像我上面所做的时间戳模糊处理一样。此外,我不知道熊猫的排数下降有多快。你知道吗

需要注意的是:

  1. 时间戳在浮点格式中是纳秒精度的,但是 多个订单可能具有相同的时间戳。你知道吗
  2. 可能会有几个订单 看起来完全一样,但时间戳不同
  3. 几个订单可能看起来完全相同,并与 相同的时间戳,两个订单将需要找到单独的匹配项

你们怎么看?我将使用什么函数在pandas中重新实现这个算法?因为我要转移到熊猫身上,我应该重新调整算法本身吗?我一直在玩iterrows,但这似乎很慢,我想知道是否有一些方法,我可以在这里应用矢量化运算符。你知道吗

谢谢你的帮助,如果你有任何问题请告诉我。你知道吗


Tags: 数据方法in订单for字典市场is
1条回答
网友
1楼 · 发布于 2024-10-05 10:14:29

默认情况下,Pandas递归地执行序列和数据帧操作。您可以将所有必要的数据关联到一个数据帧中,然后使用布尔索引和所需的过滤器来保留所需的数据。这将简化您的操作一点,因为您不必处理循环来遍历您的市场数据。另一方面,当您使用pandas时,不要使用'Timestamp'列作为索引;您会发现某些数据集可能会发生错误。如果你还有什么问题尽管问,我会尽我所能帮助你的。你知道吗

相关问题 更多 >

    热门问题