Эта тема обсуждалась по этой ссылке и ссылке .
Однако для обоих этих вопросов и ответов предполагается, что я знаю имяпеременной в моем файле мата.Есть ли способ преобразования файла mat в фрейм данных panda без знания имен переменных?Другими словами, каждый коврик может иметь разные переменные, но все же я хотел бы преобразовать их в кадр данных, захватив имя переменной в виде столбцов, а данные переменной - в виде строк.
Мой подход на этом этапе выглядит примерно так:
from scipy.io import loadmat
import numpy as np
import pandas as pd
import scipy
D = loadmat("09_07_1913_44_15_workspace.mat")
print(D.keys())
print("------------------")
#print(D['As'])
df = pd.DataFrame(D.keys()) # I get each key name and create a column name
for item in D.keys():
if not any(value in item for value in ("__header__", "__globals__","__version__")):
#print(item)
#print(D[item])
#print("-----")
matrix = D[item]
#print(matrix.flatten()) #We can also use the Flatten method to convert a matrix to 1-d array
# Alternative to flatten: Reshape
# print(matrix.reshape(9,1))#Here -1 says as many columns as needed and 1 row
# print(matrix.reshape(1,-1))#If we provide only 1 value Reshape would return a 1-d array of that length
vars()[item] = D[item].flatten()
#Sudo Code Idea: for each item, I append to the dataframe
#modDfObj2 = df.append({'[item]': D[item]} , ignore_index=True)
Примечание 1. Причина, по которой я использую flatten, заключается в том, что после этого я передам эти переменные некоторым алгоритмам ML;