python - 将 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 数据框,对如何完成有任何想法吗?
谢谢!
解决方案
尽管似乎尚不支持将表从 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
推荐阅读
- video - ffmpeg setpts 应用统一偏移量而不重新编码
- react-native - 获取未定义不是抽屉导航中的函数(评估'(0,_reactNavigation.stacknavigator)')
- xcode - Windows 上的 Xcode
- lotus-formula - @formular useragent 用于 ibm 移动应用程序/hcl nomad
- reactjs - React.js 呈现不同的标题栏
- python - 整数字符串的自定义比较
- bash - curl 命令有!字符结果验证失败
- c++ - 为动态分配的指针数组的所有元素赋值?
- laravel - 如果表单验证失败,Laravel 5.5 验证错误不会显示
- javascript - 多级可折叠/手风琴,可无限进行而不会破坏表格内容