首页 > 解决方案 > 将 matlab.object 转换为 pandas 数据框

问题描述

我已使用此代码在 python 中运行 matlab 脚本,该脚本是文件“matlab_to_python.m”,它有 1 个输出:名为“matlab_table”的 matlab 表。

import matlab.engine
eng = matlab.engine.start_matlab()

mytable = eng.matlab_to_python()

当我运行它时,mytable 的类型是:

In [28]: mytable
Out[28]: <matlab.object at 0x1ebe007fb70>

我希望能够将此表视为 python 中的 pandas 数据框,对如何完成有任何想法吗?

谢谢!

标签: pythonpandasmatlabdataframe

解决方案


尽管似乎尚不支持将表从 MATLAB 直接传输到 Python,但您可以利用 char 转换来弥补差异。

例如,您可以将表格转换为 json 格式(1xN char),然后可以使用该pandas.DataFrame.read_json函数将其转换为 DataFrame。

import matlab.engine
import pandas as pd
eng = matlab.engine.start_matlab()

# keep the table in MATLAB
eng.workspace['mytable'] = eng.matlab_to_python()

# pass a string representation to Python
jsontable = eng.eval('jsonencode(mytable)')

# convert back into a table
mytable = pd.read(jsontable)

另一种方法是从 matlab 写入 csv 文件,然后您可以通过pandas.DataFrame.read_csv


推荐阅读