我正在编写我的第一个代码(必须从一些东西开始:))我真的很挣扎,因为我无法在互联网上找到任何类似的例子给我至少一个方向。 我会尽可能地清楚地解释它。
我有两个部门的.xlsx文件,都包含很多区域。
FILE 1 - DATAS DEPENDING ON DISTRICT FILE 2 - DISTRICT UNIQUE
VALUES
columnA+B columnC columnE columnA columnE
DATA DEPARTMENT DISTRICT DEPARTMENT DISTRICT
" LIMA BARRANCA LIMA BARRANCA
" LORETO BARRANCA LORETO BARRANCA1
" LORETO BARRANCA SAN MARTIN BARRANQUITA
" SAN MARTIN BARRANQUITA LORETO BELEN
" SAN MARTIN BARRANQUITA CAJAMARCA BELLAVISTA
" SAN MARTIN BARRANQUITA PIURA BELLAVISTA1
" LORETO BELEN SAN MARTIN BELLAVISTA2
" SAN MARTIN BELLAVISTA
正如您所看到的,区域可以具有相同的名称,但重复项属于不同的部门。 我的预期结果是按如下方式更新文件1:
columnA+B columnC columnE columnA columnE
DATA DEPARTMENT DISTRICT DEPARTMENT DISTRICT
" LIMA BARRANCA LIMA BARRANCA
" LORETO BARRANCA1 LORETO BARRANCA1
" LORETO BARRANCA1 SAN MARTIN BARRANQUITA
" SAN MARTIN BARRANQUITA LORETO BELEN
" SAN MARTIN BARRANQUITA CAJAMARCA BELLAVISTA
" SAN MARTIN BARRANQUITA PIURA BELLAVISTA1
" LORETO BELEN SAN MARTIN BELLAVISTA2
" SAN MARTIN BELLAVISTA2
对于可以帮助我的工具的任何建议?我尝试了一个简单的for循环代码,但我无法弄清楚如何在同一时间内将它分成4列。
wb1 = FILE1
ws1 = worksheet1
wb2 = FILE2
ws2 = worksheet2
x=1
for distr1 in ws1['E']:
for i, j in itertools.product(range(1,ws2.max_row+1), range(1,ws1.max_row+1)):
distr2 = ws2.cell(row=i,column=5)
dept2 = ws2.cell(row=i, column=1)
dept1 = ws1.cell(row=j, column=3)
if distr2.value == str(distr1.value) + str(x) and dept2.value == dept1.value:
distr1.value = distr2.value
x +=1
可能不是这个世界上最好的代码,但正如我所说,我的第一个:)
答案 0 :(得分:0)
问题不是很清楚,特别是应该保留哪些值。我很想从第二个文件创建一个查找表,它将区域映射到部门和后缀。以下是伪代码,但应该足以让你使用。
from collections import defaultdict
districts = defaultdict(dict)
import re
dist_regex = re.compile(r"(?P<district>[A-Za-z])+(?P<suffix>[0-9]?)"
for row in ws2.iter_rows(min_col=1, max_col=5):
dept = row[0]
m = dist_regex.match(row[-1]).groupdict()
dist = m['district']
suffix = m['suffix']
districts[dist][dept] = suffix
这应该给你类似
的东西{'BARRANCA': {'LIMA':None}, {'LORETO':'1',…}
然后,您可以遍历第一个文件的行,检查区和部门的组合是否有后缀并根据需要添加。