在python中 先调用C#的dll 返回了一个类的列表,如何把这个列表转换为 python 中的 DataFrame?

 

你可以使用`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)

 

posted @ 2023-03-16 10:13  神游虚空  阅读(83)  评论(0编辑  收藏  举报