与Python迭代器相比,将.NET集合解压到dataframe中的速度更快

2024-07-02 13:11:01 发布

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

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

细节

此API(特别是OSI Pi AFSDK)用于从专有数据库检索timeseries数据。API调用是使用pythonnet库实现的,并返回一个名为AFValues对象的.NET集合。该对象是AFValue对象的集合,这些对象本身包含timestampvalue字段以及其他信息。目前,我使用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对象

我相信以上就是熊猫和Numpy如何在大型行动中实现他们的速度。以上是正确的方法吗?关于如何编写代码,有什么建议吗


Tags: 对象代码inapi列表fornet速度