有没有办法让自定义 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 用于计算,这似乎是一个非常好的解决方案。我个人找不到有关执行此类操作的文档。
1 回答
![?](http://img1.sycdn.imooc.com/545847d40001cbef02200220-100-100.jpg)
神不在的星期二
TA贡献1963条经验 获得超6个赞
有一种方法可以做到这一点,但我不会将其描述为“简单”。
在内部,Pandas 使用 numpy 来存储数据。如果您可以获得 numpy 向量形式的数据,则可以将其传递给 C,并让它对该向量进行操作。
从列中获取 numpy 向量很容易:
vec = df["foo"].to_numpy()
接下来,您需要确保向量是连续的。你不能假设它是这样,因为如果数据具有兼容的类型,pandas 会将来自多个列的数据存储在同一个 numpy 数组中。
vec = np.ascontiguousarray(vec)
然后,您可以将 numpy 数组传递给 C。
添加回答
举报
0/150
提交
取消