Ошибка ключа при загрузке файла Matlab в python - PullRequest
0 голосов
/ 29 апреля 2019

Итак, у меня есть 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.

Пожалуйста, помогите, я был бы очень признателен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...