Фрейм данных с 2 столбцами: old_path
и new_path
.Фрейм данных может содержать сотни строк.
Сценарий выполняет итерации по списку файлов.
Для каждого файла в списке проверьте, соответствует ли какая-либо часть его пути к папке значению в столбце old_path
.Если есть совпадение, замените соответствующий файл old_path
на соответствующее значение new_path
.
Я добился этого с помощью for index, row in df.iterrows():
или for row in df.itertuples():
, но я думаю, что должно быть более эффективнымспособ сделать это без необходимости использовать второй for
цикл.
Любая помощь приветствуется.В приведенном ниже примере используется df.iterrows()
import pandas as pd
import os
df = pd.read_csv('path_lookup.csv')
# df:
# old_path new_path
# 0 F:\Business\Budget & Forecasting M:\Business\Finance\Forecast
# 1 F:\Business\Treasury Shared M:\Business\Finance\Treasury
# 2 C:\Temp C:\NewTemp
excel_link_analysis_list = [
{'excel_filename': 'C:\\Temp\\12345\\Distribution Adjusted Claim.xlsx',
'file_read': 'OK'},
{'excel_filename': 'C:\\Temp\\SubFolder\\cost estimates.xlsx',
'file_read': 'OK'}
]
for i in excel_link_analysis_list:
for index, row in df.iterrows():
if row['old_path'].lower() in i['excel_filename'].lower():
dest_path_and_file = i['excel_filename'].lower().replace(row['old_path'].lower(),
row['new_path'].lower())
print(dest_path_and_file)
отпечатков:
c: \ newtemp \ 12345 \ дистрибутив скорректированых заявок. Xlsx
c: \ newtemp \ subfolder\ оценки стоимости. xlsx