Как загрузить файл набора данных, который имеет имя папки и имя изображения, но не содержит идентификатор в Python с использованием Panda? - PullRequest
0 голосов
/ 10 мая 2019

Я использую текстовый файл в этом формате (ниже). Первый столбец представляет имя папки. Вот образец.

0010 \ 0010_01_05_03_115.jpg
0010 \ 0010_01_05_03_121.jpg
0010 \ 0010_01_05_03_125.jpg

Как я могу загрузить его в мою программу, потому что я получаю эту ошибку:

IMG = image.load_img ( 'TrainImages /' + TrainImages ['id'] [i] .astype ('str') + '. Png', target_size = (2, 8, 28, 1), оттенки серого = False) Файл "C: \ Anaconda \ lib \ site-packages \ pandas \ core \ frame.py", строка 2927, в GetItem indexer = self.columns.get_loc (key) Файл "C: \ Anaconda \ lib \ site-packages \ pandas \ core \ indexes \ base.py", строка 2659, в get_loc вернуть self._engine.get_loc (self._maybe_cast_indexer (key)) файл "pandas / _libs / index.pyx", строка 108, в Файл pandas._libs.index.IndexEngine.get_loc "pandas / _libs / index.pyx", строка 132, в Файл pandas._libs.index.IndexEngine.get_loc "pandas / _libs / hashtable_class_helper.pxi", строка 1601, в Файл pandas._libs.hashtable.PyObjectHashTable.get_item "pandas / _libs / hashtable_class_helper.pxi", строка 1608, в pandas._libs.hashtable.PyObjectHashTable.get_item KeyError: 'id'

На самом деле я пытаюсь создать набор обучающих данных, читая файл и применяя к нему некоторую предварительную обработку перед выполнением остальных действий.

Это код, который я пробовал, и я не уверен, что он правильный:

TrainImages=pd.read_csv('client_train_raw.txt')
train_image =[]
for i in tqdm(range(TrainImages.shape[0])):
    img=image.load_img('TrainImages/' +TrainImages['id'] 
      [i].astype('str')+'.png', target_size=(2, 8, 28, 1),grayscale=False)
    img = image.img_to_array(img)

1 Ответ

0 голосов
/ 10 мая 2019

Вы не сообщили своему фрейму данных, что означает 'id'. Похоже, ваш файл данных имеет только один столбец, путь к файлу разделен '\'. Вы должны быть в состоянии исправить это с помощью:

train_images = pd.read_csv('client_train_raw.txt', header=False, names=['id'])

Это пометит один столбец в вашем фрейме данных как 'id', и вы перестанете получать эту ошибку. Я думаю, что все еще будут некоторые проблемы с тем, как вы обрабатываете пути к файлам, и я не уверен, что [i] в TrainImages['id'][i].astype('str') делает то, что вы думаете.

Также вам, вероятно, не нужно использовать Панд для этого чтения. Поскольку каждая строка в вашем файле представляет собой путь к изображению, вы можете просто использовать:

with open('client_train_raw.txt', 'r') as a_file:
    for idx, line in enumerate(a_file):
        # Each line will be a path to a data file.
        img = image.load_img('TrainImages/' + line + idx + '.png', ...)
        img = image.img_to_array(img)

или что-то, но я не уверен, что idx здесь должен делать.

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