Сделать цикл с процедурами, которые включают определенные файлы из списка? - PullRequest
0 голосов
/ 05 июля 2018

У меня есть следующий список:

grouped_shapefiles, который имеет эти каталоги для файлов: (пары pst и dbound) в каждой папке.

[['C:\\Users\\user\\Desktop\\eff\\20194\\DBOUND\\DBOUND.shp',
  'C:\\Users\\user\\Desktop\\eff\\20194\\PST\\PST.shp'],
 ['C:\\Users\\user\\Desktop\\eff\\20042\\DBOUND\\DBOUND.shp',
  'C:\\Users\\user\\Desktop\\eff\\20042\\PST\\PST.shp'],
 ['C:\\Users\\user\\Desktop\\eff\\20161\\DBOUND\\DBOUND.shp',
  'C:\\Users\\user\\Desktop\\eff\\20161\\PST\\PST.shp'],
 ['C:\\Users\\user\\Desktop\\eff\\20029\\DBOUND\\DBOUND.shp',
  'C:\\Users\\user\\Desktop\\eff\\20029\\PST\\PST.shp'],
 ['C:\\Users\\user\\Desktop\\eff\\20008\\DBOUND\\DBOUND.shp',
  'C:\\Users\\user\\Desktop\\eff\\20008\\PST\\PST.shp']]

Я хочу создать цикл for, который выполняет этот фрагмент кода в соответствующих файлах для каждой пары pst и dbound в каждой папке (20194,20042,20161 и т. Д.), Содержащейся в списке.

import geopandas as gpd
import pandas
#pst = gpd.read_file(r'C:\Users\user\Desktop\New folder1\PST')#this is not needed in the final because it takes the path by it self
#dbound = gpd.read_file(r'C:\Users\user\Desktop\New folder1\DBOUND')#same here
dbound.reset_index(inplace=True)
wdp = gpd.sjoin(pst, dbound, how="inner", op='within')#each dbound and pst from every folder
wdp['DEC_ID']=wdp['index']

Я просто хочу знать, как сделать цикл for, который будет выполнять то, что код имеет в файлах, которые должны. Я пробовал использовать циклы for и использовать позицию в скобках, но это не помогло.

1 Ответ

0 голосов
/ 05 июля 2018

Не уверен, что если я правильно понимаю ваш вопрос, вы пытаетесь перебирать пункты списка попарно? Если это так, то это довольно просто:

for i in grouped_shapefiles:
    pst = gpd.read_file(i[0])
    dbound = gpd.read_file(i[1])
    if i[0].split("\\")[-3] == i[1].split("\\")[-3]:
        dbound.reset_index(inplace=True)
        wdp = gpd.sjoin(pst, dbound, how="inner", op='within')
        wdp['DEC_ID'] = wdp['index']
    else:
        print ("Folder pairs mismatch")

Отредактировано согласно моему пониманию

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