微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

比 Python 迭代器更快地将 .NET 集合解包到 Pandas 数据帧中

如何解决比 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 举报,一经查实,本站将立刻删除。