更新基于不同文件的单元格的单元格值

我正在写我的第一个代码(必须从某些东西开始:)),我真的很挣扎着,因为在互联网上找不到任何类似的例子,至less给我一个方向。 我会努力尽可能清楚地解释它。

我有两个部门的.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 

任何build议可以帮助我的工具? 我尝试了一个简单的循环代码,但我不知道如何在同一时间在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 

可能不是这个世界上最好的代码,但正如我所说,我的第一个:)

问题不是很清楚,特别是应该保留哪些价值。 我会试图从第二个文件中创build一个查找表,将地区映射到部门和后缀。 以下是伪代码,但应该给你足够的工作。

 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',…} 

然后,您可以遍历第一个文件的行,检查区域和部门的组合是否有后缀,并根据需要添加它。