【问题标题】:Is there a C/C++ API for python pandas? [closed]是否有用于 python pandas 的 C/C++ API? [关闭]
【发布时间】:2012-07-23 06:24:19
【问题描述】:

我正在使用 C/C++ 从遗留后端系统中提取大量数据,并使用 distutils 将其移动到 Python。在Python中获取数据后,我将其放入一个pandas DataFrame对象中进行数据分析。现在我想走得更快,想避免第二步。

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

我已经考虑在 C 中创建 numpy 数组对象作为一种解决方法,但我大量使用时间序列数据,并且也希望拥有 TimeSeries 和 date_range 对象。

【问题讨论】:

    标签: python c api pandas


    【解决方案1】:

    现在有一个 C++ 库,在接口和功能方面与 Pandas 包相当。 请参阅Linkedin“https://www.linkedin.com/pulse/pythons-pandas-c-update-hossein-moein/”中的这篇文章 开源代码在“https://github.com/hosseinmoein/DataFrame

    【讨论】:

    • 请在 StackOverflow 上发布独立的解释 - 如果链接消失,这个答案将毫无用处。
    • @GraphicsMuncher 如果链接消失,在这种情况下,无论其是否自包含,答案都将毫无用处。
    • Vaex 非常棒:towardsdatascience.com/…
    【解决方案2】:

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

    • Pandas 数据框是纯 Python 类,因此不容易从 C/C++ 构造,但各个列 (see class Series source) 的底层数据存储是 numpy 一维数组。 Numpy 有一个不错的 C API,您可以从 C 构造 numpy 数组,然后将其传递给您的 Python 代码。

    • 第二种解决方案是为 Pandas 编写自己的输入模块。这并不像听起来那么工作,而且可能非常有效。 Pandas 低级 IO 模块是用Cython(一种介于 Python 和 C 之间的特殊语言,编译为 C)编写的,参见例如以parser.pyx 为例。虽然那个特定的解析器非常复杂,但您的解析器基本上只会调用您的遗留 C 代码。

    【讨论】:

      【解决方案3】:

      所有 pandas 类(TimeSeries、DataFrame、DatetimeIndex 等)都有纯 Python 定义,因此没有 C API。您最好将 C 中的 numpy ndarrays 传递给您的 Python 代码,并让您的 Python 代码从中构造 pandas 对象。

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

      【讨论】:

      • 感谢 ecatmur!我会试试 ndarris...
      猜你喜欢
      • 1970-01-01
      • 2017-06-05
      • 2012-06-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2010-09-09
      • 2010-11-08
      • 1970-01-01
      相关资源
      最近更新 更多