首页 > 解决方案 > 比 Python 迭代器更快地将 .NET 集合解压缩到 Pandas 数据帧中

问题描述

我已经围绕 .NET API 构建了一个 Python 包装器。包装器目前在将 .NET 集合对象“解包”pd.Series到要返回的所需对象时非常慢。我想通过包装一些 C 代码来进行解包来加速这部分代码。

细节

此 API(特别是OSI Pi AFSDK)用于从专有数据库中检索时间序列数据。API 调用是使用pythonnet库​​实现的,并返回一个称为AFValues对象的 .NET 集合。该对象是AFValue对象的集合,它们各自包含一个timestamp和一个value字段以及其他信息。目前,我使用 Python 列表理解“解压缩”这些对象中的每一个,并将它们组合在一起以形成系列。这是一个非常简化的版本:

timestamps = [afvalue.Timestamp for afvalue in afvalues] 
# (There is actually some timezone handling etc in the above as well)
values = [afvalue.Value for afvalue in afvalues]
result = pd.Series(index = timestamps, data = values)

这个列表理解在非常大的集合(即数百万个值)上明显很慢。

期望的结果

理想情况下,我想:

我相信以上是 Pandas 和 Numpy 在大型操作中实现速度的方式。以上是正确的方法吗,以及我将如何进行编码的任何建议?

标签: python.netpandascython

解决方案


推荐阅读