比 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)

此列表推导在非常大的集合(即数百万个值)上明显变慢。

预期结果

理想情况下,我希望:

  • 使用现有的 pythonnet 代码调用 API
  • AFValues 对象传递到一些用 C(或者可能是 .NET?开放给建议)编写的预编译代码
  • 让 C 代码返回一个 Numpy 数组或类似数组以转换为 Pandas 对象。

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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)