如何将 Matlab 中的多维数组导出到 Python 中的 MultiIndex Dataframe?

How to export Multidimensional Arrays in Matlab to MultiIndex Dataframe in Python?

假设我在 Matlab 中有一个多维元素说

M=rand(5,4,3)

其中 5 行代表客户的姓氏,4 列代表他们的{年龄、体重、活动、幸福水平},而其他 3 个多矩阵代表年份 {1999,2003,2009 }.

我正在尝试将其转换为 Pandas 中的多索引数据框。可以请有人帮助我吗?

我认为没有简单的方法可以做到,

我会post我的解决方案供以后参考。但是,如果有人乐于添加答案,我们将不胜感激。但是,如果我没有在网上找到简单的解决方案,我会做很多事情。我 posted 之前没有人回答过这个问题。

在 Matlab 中,我已经为每个维度 (:,:,i)i=1,2,3 创建了一个 excel 文件,如下所示:

for i=1:3
    xlswrite([num2str(i) '.xlsx'],M(:,:,i))
end

因此,我将三个 excel 个文件保存为 1.xlsx,依此类推。

现在,我访问 python 中的相同目录,并编写了以下代码

import pandas as pd

# Import the excel file and call it xls_file
df = pd.read_excel('You_working_directory/1.xlsx', header=None)

# Creating Multi indexing for both columns and rows
col_name=['age', 'weight', 'activities', 'happiness level']
row_name=['Rami Chehab','Aya Ghalayini','Bassel Dajani','Mohammad Saab','Huthaifa Abou Hammad']
arrays1 = [['Paid Individuals']*5,row_name]
arrays2 = [['1999']*4,col_name]
rows1 = pd.MultiIndex.from_arrays(arrays1, names=['Category', 'Names'])
col1= pd.MultiIndex.from_arrays(arrays2, names=['Year', 'Activity']) 

df1 = pd.DataFrame(df.values, columns=col1,index= rows1)

# Creating the multi-dimenstional variable which is year in our case
Year=['2003','2009']
for ii in range(0,2):
    df = pd.read_excel("You_working_directory" + str(ii+2)+'.xlsx', header=None)
    arrays2 = [[Year[ii]]*4,col_name]
    col2= pd.MultiIndex.from_arrays(arrays2, names=['Year', 'Activity']) 
    df = pd.DataFrame(df.values, columns=col2,index= rows1)
    # Merge data from the row index
    df1 = pd.concat([df1, df], axis=1)

题目如我所愿