Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 根据不同的文件更新单元格值';s细胞_Excel_Python 2.7_Cell_Updates_Openpyxl - Fatal编程技术网

Excel 根据不同的文件更新单元格值';s细胞

Excel 根据不同的文件更新单元格值';s细胞,excel,python-2.7,cell,updates,openpyxl,Excel,Python 2.7,Cell,Updates,Openpyxl,我正在写我的第一个代码(必须从以下内容开始:)),我真的很难做到这一点,因为我在互联网上找不到任何类似的例子,至少可以给我一个方向。 我会尽可能清楚地解释它 我有两个关于部门的.xlsx文件,都包含许多地区 FILE 1 - DATAS DEPENDING ON DISTRICT FILE 2 - DISTRICT UNIQUE VALUES columnA+B

我正在写我的第一个代码(必须从以下内容开始:)),我真的很难做到这一点,因为我在互联网上找不到任何类似的例子,至少可以给我一个方向。 我会尽可能清楚地解释它

我有两个关于部门的.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
有什么可以帮助我的工具建议吗?我尝试了一个使用simple 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

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

问题不是很清楚,特别是应该保留哪些值。我很想从第二个文件创建一个查找表,它将地区映射到部门和后缀。以下是伪代码,但应提供足够的代码供您使用

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

然后,您可以在第一个文件的行中循环检查district和department的组合是否有后缀,并根据需要添加后缀。

问题不是很清楚,特别是应该保留哪些值。我很想从第二个文件创建一个查找表,它将地区映射到部门和后缀。以下是伪代码,但应提供足够的代码供您使用

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

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

您不太清楚要做什么。你只是想合并这两个文件吗?不,这有点复杂。该地区的名称有时会重复:因此,它们的增量后缀在FILE2中是唯一的值。文件1中不是这样,但我不能只是给它们添加一个随机后缀:它们必须与文件2中的相同,关于它们所属的部门。希望能更清楚一点,你到底想干什么还不清楚。你只是想合并这两个文件吗?不,这有点复杂。该地区的名称有时会重复:因此,它们的增量后缀在FILE2中是唯一的值。文件1中不是这样,但我不能只是给它们添加一个随机后缀:它们必须与文件2中的相同,关于它们所属的部门。希望能更清楚一点。非常感谢您的帮助,我会按照您给我指明的方向努力找到解决方案!非常感谢您的帮助,我会按照您指示的方向努力找到解决方案!