Итак, у меня есть 32 Matlab-файла, каждый приблизительно по 1,2 ГБ.Я загружаю их все одинаково (как показано ниже).Я получаю все значения из строки с именем 'data_mat'. Это сработало, но когда я дошел до человека 27, он выдает ошибку, выдав ключевую ошибку и сказав 'data_mat'
KeyError: 'data_mat' Но я знаю 'data_mat'существует, потому что я проверил, и иногда человек 27 будет работать без проблем, в других случаях это дает мне эту ошибку.Для этого человека это ошибки больше, чем нет, но похоже, что то же самое происходит для каждого файла после 27 - 32 также.Где иногда это будет работать, а иногда это даст мне эту ошибку.
Ниже приведены некоторые примеры того, как я загружаю эти файлы и запускаю их в основном классе.
class Channels():
def __init__(self):
self = self
def all(self, i, c):
if i == 1:
# Value error: need to double-check correct columns labeling for the classification of each sleep/dream wake cycle
a = hdf5storage.loadmat("Sub1.mat")
b = a['data_mat']
person1 = pd.DataFrame(b[c])
person1.columns = ["Dream + Recall(NREM)","Dream + Recall(NREM)", "No Experience(NREM)", "No Experience(NREM)", "No Experience(NREM)", "Dream + Recall(NREM)", "Dream + Recall(REM)","Dream + Recall(NREM)", "Dream + Recall(NREM)"]
#person1.columns = ["Dream + Recall(NREM)","Dream + Recall(NREM)", "No Experience(NREM)", "No Experience(NREM)", "No Experience(NREM)", "Dream + Recall(NREM)", "Dream + Recall(REM)","Dream + Recall(NREM)", "Dream + Recall(NREM)", "Dream + Recall(REM)"]
return person1
elif i == 2:
a = spio.loadmat("Sub2.mat")
b = a['data_mat']
person2 = pd.DataFrame(b[c])
person2.columns = ["Dream - Recall(NREM)", "Dream - Recall(NREM)", "Dream - Recall(NREM)", "No Experience(NREM)", "Dream + Recall(NREM)", "No Experience(NREM)", "Dream - Recall(NREM)", "Dream - Recall(NREM)", "Dream + Recall(REM)", "Dream - Recall(NREM)", "Dream + Recall(NREM)", "Dream + Recall(NREM)"]
return person2
elif i == 27:
#v7.3 HDF
a = hdf5storage.loadmat("Sub27.mat")
b = a['data_mat']
person27= pd.DataFrame(b[c])
person27.columns = ["Dream - Recall(NREM)","Dream + Recall(NREM)","Dream - Recall(NREM)","Dream + Recall(NREM)","Dream - Recall(NREM)","Dream + Recall(NREM)","Dream + Recall(NREM)","Dream + Recall(NREM)","Dream + Recall(REM)","Dream + Recall(NREM)","Dream + Recall(NREM)", "Dream - Recall(REM)", "Dream + Recall(NREM)","Dream + Recall(REM)"]
return person27
main():
person = Channels().all(27, 0)
Если возможноЯ не хочу менять способ загрузки файлов, потому что знаю, что они работают для большинства моих людей.Но как я могу это исправить, чтобы я иногда перестал получать эту ключевую ошибку, и все это просто работает гладко?
Дополнительные примечания: я никогда не изменяю файл, я просто извлекаю из него данные, когда загрузка это типdict и b это массив типов numpy, а person это фрейм данных pandas.
Пожалуйста, помогите, я был бы очень признателен.