Отбросьте фреймы данных с условием содержит (os.путь.существует)

#python #pandas

Вопрос:

Попытка удалить строки с несуществующим путем…

 data_docs = pd.read_csv('Documents_data.csv')
data_docs.drop(data_docs[os.path.exists(str(data_docs['file path']))].index, inplace=True)
 

Ошибка:

 KeyError: False
 

Ответ №1:

В его нынешнем os.path.exists виде рассматривается все str представление столбца, а не по элементам. Один из способов-это apply :

 exists = data_docs["file path"].apply(os.path.exists)
data_docs = data_docs[exists]
 

Если вы напечатаете exists , это будет логический ряд, указывающий, какие пути существуют, а какие нет.

 exists = ~exists
data_docs.drop(data_docs[exists].index, inplace=True)
 

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