python - 比 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 在大型操作中实现速度的方式。以上是正确的方法吗,以及我将如何进行编码的任何建议?
解决方案
推荐阅读
- c++ - 使用 OpenVDB 重构 Enright 测试
- python - Selenium:启动 Firefox 并启用扩展
- java - ASP.net 和 java 应用程序的单点登录
- c# - 只有assignment、call、increment、decrement、await和new对象表达式可以作为语句解决方案
- php - Magento 1.9 api/rest 404 错误
- angular - ErrorHandler 中的循环依赖
- angular - How to stub export type by using sinon?
- c# - TlsException:使用HttpWebRequest时认证或解密失败
- elasticsearch - ElasticSearch v1.4 恢复丢失的数据
- android - 在处理 Android 草图时加载本地图像