首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python ctype:如何将行输出从C函数传递到pandas DataFrame?

Python ctype:如何将行输出从C函数传递到pandas DataFrame?
EN

Stack Overflow用户
提问于 2018-06-10 02:13:06
回答 1查看 538关注 0票数 2

我的问题是如何通过ctype将C函数中以制表符分隔的输出解析为pandas DataFrame:

我正在用Python3.x编写一个使用ctype的C库的Python包装器。C库目前执行数据库查询。我访问的C函数return_query()在给定文件路径、索引和查询字符串的情况下,从查询中返回制表符分隔的行:

代码语言:javascript
运行
复制
int return_query(structname **output, const char *input_file,
                 const char *index, const char *query_string);

如您所见,我使用output作为存储查询中所有记录的位置,因此structname是行的结构

我还有一个打印到STDOUT的函数:

代码语言:javascript
运行
复制
int print_query(const char *input_file,
                 const char *index, const char *query_string);

我的目标是通过ctype访问这些函数,并将制表符分隔的行输出传递给pandas DataFrame。

我的问题是:

(1)我可以尝试解析print_query()的STDOUT;但是,这些查询可能导致大型制表符分隔的DataFrames。我担心这个解决方案效率不高,因为它可能无法扩展到+1000行。其他问题大致涵盖了如何通过ctype从Python中的C函数捕获STDOUT:

Capturing print output from shared library called from python with ctypes module

(2)我能否以某种方式访问output,并将其传递给熊猫DataFrame?我目前不确定这将如何工作,例如。

代码语言:javascript
运行
复制
import ctypes

lib = CDLL("../libshared.so")  ### reference to shared library, *.so

lib.return_query.restype = ctypes.c_char
lib.return_query.argtypes = (???, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p)

第一个参数应该是什么,我如何将它传递给一个可能是熊猫DataFrame的东西?

(3)也许重写C函数会更好,这些C函数将以制表符分隔的行返回到更容易通过ctype访问的内容?

EN

Stack Overflow用户

发布于 2018-06-10 21:30:51

我本打算发表评论,但stackoverflow阻止了我。

1- (c_types.c_void_p,对象传递给像PyObject *这样的c函数,因此lib.return_query.argtypes = pandas ctypes.c_char_p,ctypes.c_char_p,ctypes.c_char_p)

2-如果返回制表符分隔的行,听起来更像ctypes.c_char_p,而不是lib.return_query.restype = ctypes.c_char。而你的函数int,应该是return_query * return_query

这些只是评论和观察,而不是完整的答案……

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50777214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档