将自定义 C 函数与 Pandas 一起使用(一种简单的方法)

有没有办法让自定义 C 函数作用于 pandas DF?例如,我知道我可以将 ac 函数包装在 python 函数中,并在行明智迭代中使用它,但这似乎效率低下。我知道pandas是用c写的。我想要一种简单的方法来告诉 pandas“使用这个 c 函数”。这很天真,但是这样的事情


...

cFunc = get_c_function_some_how()


for i in range(1000):

    df = df.use_c_function(cFunc)


use_df(df)

...

我的用例是,我一遍又一遍地进行一组简单但计算成本较高的计算,并且我希望使该特定计算集显着更快


编辑:我想以某种方式将整个 Pandas Dataframe 传递给 C 函数就可以了,实际上迭代可能应该在 C 内部发生,所以如果需要使用一次 python 包装的 c 函数,那么数据就被移交给C 用于计算,这似乎是一个非常好的解决方案。我个人找不到有关执行此类操作的文档。


繁花不似锦
浏览 85回答 1
1回答

神不在的星期二

有一种方法可以做到这一点,但我不会将其描述为“简单”。在内部,Pandas 使用 numpy 来存储数据。如果您可以获得 numpy 向量形式的数据,则可以将其传递给 C,并让它对该向量进行操作。从列中获取 numpy 向量很容易:vec = df["foo"].to_numpy()接下来,您需要确保向量是连续的。你不能假设它是这样,因为如果数据具有兼容的类型,pandas 会将来自多个列的数据存储在同一个 numpy 数组中。vec = np.ascontiguousarray(vec)然后,您可以将 numpy 数组传递给 C。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python