惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
爱范儿
爱范儿
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
B
Blog
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
D
DataBreaches.Net
B
Blog RSS Feed
小众软件
小众软件
人人都是产品经理
人人都是产品经理
I
InfoQ
P
Proofpoint News Feed
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - 神游虚空

解决 GDAL 用 C# 访问时,中文乱码问题。 学习AI编程 安装 RAGFlow 安装 KTransformer 量化投资赚的哪方面的钱? python中调用 .net 的 dll 时,报错:Exception has occurred: TypeLoadException 使用 Open XML SDK 实现 html 富文本转换为 docx 格式示例 vue项目服务器部属源码调试解决办法 vue3 + ts + element_plus 创建后台管理系统,学习记录 大A指数周内效应分析 两个通达信公式 如何在.netcore 上实现 Rbac 权限管理 修道是精神上的减熵过程 BPMN2.0 Specifaction 节选翻译,10.4.6 事件处理(handling Events,原文 275页) BPMN2.0 Specifaction 节选翻译,10.4 事件 Events (原文233页) 使用ef或dbcontext的时候主要注意三个问题 EFCore 中 group 分组后,只选出每组中含有最大值的数据行 BPMN2.0 Specifaction 节选翻译,10.2.8 循环特征 Loop Characteristics (原文 189页) BPMN2.0 Specifaction 节选翻译,10.2.5 子流程 Sub-Processes (原文173页) BPMN2.0 Specifaction 节选翻译,10 Process (原文145页)
在python中 先调用C#的dll 返回了一个类的列表,如何把这个列...
神游虚空 · 2023-03-16 · via 博客园 - 神游虚空

你可以使用`pandas.DataFrame`的构造函数,将类的列表转换成一个包含类属性的字典列表,然后再将这个字典列表作为参数调用`pandas.DataFrame`构造函数。下面是一个示例代码:

假设C#的DLL文件包含一个名为`MyClass`的类,它有三个属性:`name`,`age`和`gender`。我们从DLL文件中调用一个函数`get_data()`,这个函数返回一个`MyClass`类的列表。下面是一个Python代码示例:

```python
import pandas as pd
import ctypes

# 加载DLL文件
mylib = ctypes.cdll.LoadLibrary("MyLibrary.dll")

# 获取get_data函数
get_data_func = mylib.get_data
get_data_func.restype = ctypes.POINTER(ctypes.py_object)

# 调用get_data函数
data_list = get_data_func().contents

# 将类的列表转换为一个字典列表
dict_list = []
for instance in data_list:
dict_list.append({'name': instance.name, 'age': instance.age, 'gender': instance.gender})

# 将字典列表转换为DataFrame
df = pd.DataFrame(dict_list)
```

在上面的代码中,我们首先加载DLL文件并获取`get_data`函数。然后,我们调用`get_data`函数并将返回值存储在`data_list`中。接下来,我们遍历`data_list`列表并将`MyClass`类的属性和值作为键值对添加到一个字典中,然后将这个字典添加到`dict_list`列表中。最后,我们将`dict_list`传递给`pandas.DataFrame`构造函数,将其转换为一个DataFrame对象。

import pandas as pd
from ctypes import cdll, c_double, c_char_p
dll = cdll.LoadLibrary('my_dll.dll')  # 替换成实际的 DLL 文件名

# 调用 C# DLL 的函数,返回一个列表
my_class_list = dll.my_function()  

# 将列表转换为字典
dict_list = []
for my_class in my_class_list:
    dict_list.append(vars(my_class))

# 将字典列表转换为 DataFrame
df = pd.DataFrame(dict_list)