#python #pandas
Вопрос:
IMDB Я скачал изображения с imdb, и я хочу сопоставить изображения с идентификатором imdb, который у меня есть, в формате csv, чтобы создать фрейм данных. Для каждого изображения я хочу проверить имя файла и проверить, содержит ли мой набор данных часть имени файла. Мои файлы-jpg и jpeg. У меня может быть несколько изображений для фильма. Например, имена изображений могут следовать следующему шаблону:
- tt0000574.jpg
- tt0000574.jpeg
- tt0000574_2.jpg
- tt0000574_4.jpeg
Я здесь просто интересуюсь 9 первыми символами. этот фрагмент кода не делает ничего особенного, кроме печати.
for filename in os.listdir(directory):
print(filename[:9])
if(df_temp['imdb_title_id'].str.contains(filename)):
print(df_temp['imdb_title_id'])
print (filename)
print("--------------")
continue
else:
continue
Я также попытался использовать фильтр: df_temp[df_temp[‘imdb_title_id’].str.содержит(имя файла)] на основе ответов, которые я нашел в stackoverflow.
Моя проблема заключается в ошибке ответа, которую я получаю:
Ошибка значения: Значение истинности кадра данных неоднозначно. Используйте.empty, a.bool(), a.item(), a.any() или a.all().
Комментарии:
1. как выглядит df_temp[‘imdb_title_id’]?
Ответ №1:
Вместо использования if
оператора Python, который не может обрабатывать логический индекс, представляющий собой ряд, содержащий несколько значений (отсюда предупреждение о двусмысленности), вы можете использовать iterrows()
итерацию по строкам и выводить содержимое по одному:
for filename in os.listdir(directory):
print(filename[:9])
for row in df_temp.loc[df_temp['imdb_title_id'].str.contains(filename)].iterrows():
print(row['imdb_title_id'])
print (filename)
print("--------------")