首页 > 解决方案 > 熊猫系列转CFFI指针

问题描述

我正在尝试使用 CFFI 模块在 Python 和 Rust 代码之间进行互操作。我想通过 C 接口传递一个 Pandas 系列数据指针。但是我不知道基础系列数据是如何布置的。我可以通过调用使其工作,series.to_numpy()但是否可以将指针直接传递给 Pandas 数组而无需将数据复制到 Numpy 数组中?

请参见以下示例:

import cffi

import pandas as pd

series = pd.Series((1.0, 2.0, 3.0))

ffi = cffi.FFI()
ffi.cdef('void main(const double *values, uint32_t length);')
lib = ffi.dlopen('./target/debug/libpython_rust.so')

# pointer = ffi.cast('double *', series.array)  # <-- is it possible to make it work?
pointer = ffi.cast('double *', series.to_numpy().ctypes.data)  # <-- works but we are making a copy

lib.main(pointer, series.size)

标签: pythonpandaspython-cffi

解决方案


推荐阅读