How do i convert a Python Pandas Dataframe to Matlab types?

158 ビュー (過去 30 日間)
Ricardo Alves
Ricardo Alves 2016 年 5 月 17 日
回答済み: MathWorks Support Team 2024 年 6 月 3 日
I am calling a python function from Matlab code which returns a Pandas Dataframe. I would like to convert the content of the DataFrame to Matlab data types, but I can't find the correct way to do it. Thanks in advance for any help on this.

採用された回答

MathWorks Support Team
MathWorks Support Team 2024 年 6 月 3 日
Starting in R2024a, you can convert a pandas DataFrame to a MATLAB table using the table function. You can also convert a pandas DataFrame to a MATLAB timetable using the timetable function. In addition, you can convert a MATLAB table or timetable to a pandas DataFrame using the py.pandas.DataFrame function. You can also pass MATLAB tables or timetables directly to Python functions without converting them to pandas DataFrames first.
For more information and examples see:
.

その他の回答 (6 件)

Todd Leonhardt
Todd Leonhardt 2016 年 5 月 18 日
A simple and effective, but perhaps inelegant, solution is to first save the Pandas DataFrame as a CSV file and then read that data into MATLAB as a table datatype (as long as you have MATLAB R2013b or newer).
You can save a Pandas DataFrame as a CSV file with the DataFrame.to_csv() function: http://pandas.pydata.org/pandas-docs/version/0.18.1/generated/pandas.DataFrame.to_csv.html
You can read a CSV file into MATLAB as a table using the readtable() function: http://www.mathworks.com/help/matlab/ref/readtable.html

Todd Leonhardt
Todd Leonhardt 2016 年 5 月 18 日
編集済み: Todd Leonhardt 2016 年 5 月 18 日
Another possibility is to convert the Pandas DataFrame to a Python dictionary using the DataFrame.to_dict() method: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_dict.html
Once you have the data as a Python Dictionary, you should be able to a use that in MATLAB as shown here: http://www.mathworks.com/help/matlab/matlab_external/use-python-dict-type-in-matlab.html

Jeffrey Daniels
Jeffrey Daniels 2018 年 10 月 19 日
編集済み: Jeffrey Daniels 2019 年 11 月 1 日
I solved this problem by querying the Pandas dataframe column data types and inserting them as the last row of the dataframe, convert the df to string and pass to Matlab. Then once in Matlab I have a method that reads the string into a Matlab table and applies the data type specified in the last row of the CSV to each column of the table. It's not elegant, but it is fairly bulletproof. This method works completely in memory space and does not require writing to hard drive.
  1 件のコメント
Dev-iL
Dev-iL 2020 年 5 月 6 日
Would it be possible for you to post a code sample? There are several moving parts in this solution...

サインインしてコメントする。


Artem Lensky
Artem Lensky 2022 年 5 月 25 日
It implements two funcions:
  • df2t - that converts Pandas DataFrame to Matlab Table
  • t2df - that converts Matlab Table to Pandas DataFrame.
The examples are shown in test.mlx.

Bryan Yu
Bryan Yu 2017 年 12 月 1 日
HDF5 is native for both pandas and MATLAB. Could be a good compromise for speed and type safety.

Francesco Giaretta
Francesco Giaretta 2024 年 2 月 1 日

カテゴリ

Help Center および File ExchangeCall Python from MATLAB についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by