2012-07-23 79 views
4

我使用C/C++从传统后端系统中提取海量数据,并使用distutils将其移至Python。在Python中获取数据后,我将其放入一个pandas DataFrame对象中进行数据分析。现在我想要更快,并希望避免第二步。有没有用于python熊猫的C/C++ API?

是否有一个C/C++ API用于熊猫在C/C++中创建DataFrame,添加我的C/C++数据并将其传递给Python?我正在考虑类似numpy C API的东西。

我已经习惯于在C中创建numpy数组对象作为解决方法,但我大量使用时间序列数据,并且很想拥有TimeSeries和date_range对象。

回答

4

所有的熊猫类(TimeSeries,DataFrame,DatetimeIndex等)都有纯Python定义,所以没有C API。将C的numpy ndarray从你的Python代码传递给Python代码并让你的Python代码从它们中构建pandas对象是最好的。

如果需要,您可以使用PyObject_CallFunction等来调用熊猫构造函数,但是您必须注意从模块导入访问名称并检查错误。

+0

感谢ecatmur!我会给ndarrys一个尝试... – THM 2012-07-23 16:23:51

4

我正在处理一个类似的问题,加载Pandas不支持的格式与C API的数据。我找到了两种方法来解决这个问题,希望有人会发现它们有用。

  • 熊猫数据帧是纯Python类,因此它们不容易从C/C++来构造,但各个列(see class Series source)的基础数据存储是numpy的一维数组。 Numpy有一个不错的C API,你可以从C构造numpy数组,然后将它传递给你的Python代码。

  • 第二种解决方案是为熊猫编写自己的输入模块。这不像听起来那么有效,可能效率很高。熊猫低级IO模块编写为Cython(Python和C之间的某种特殊语言,编译为C),请参阅例如,parser.pyx。虽然这个特定的解析器是相当涉及的,你基本上只会调用你的遗留C代码。