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

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
Google Developers Blog
S
SegmentFault 最新的问题
Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
P
Proofpoint News Feed
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog
F
Fortinet All Blogs
C
Check Point Blog
博客园_首页
I
InfoQ
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Engineering at Meta
Engineering at Meta
美团技术团队
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 神游虚空

解决 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)