Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.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
Python 如果某些列相交,如何将一行从一张图纸复制到另一张图纸_Python_Excel_Openpyxl - Fatal编程技术网

Python 如果某些列相交,如何将一行从一张图纸复制到另一张图纸

Python 如果某些列相交,如何将一行从一张图纸复制到另一张图纸,python,excel,openpyxl,Python,Excel,Openpyxl,鉴于: 我有一个文件grumble.xlsx 内部有3个选项卡:Sheet1 Sheet2和sheet3 Sheet 1 has 588 rows and 11 columns of data Sheet 2 has 3029 rows and 17 columns of data Sheet 3 in empty 目标: 如果sheet1列的值\u name S2==为sheet2列的值\u name sp2->从sheet2复制整行并粘贴到工作表3中 必须有588个匹配项,就像shee

鉴于:

我有一个文件
grumble.xlsx

内部有3个选项卡:
Sheet1 Sheet2和sheet3

Sheet 1 has 588 rows and 11 columns of data

Sheet 2 has 3029 rows and 17 columns of data

Sheet 3 in empty
目标:

如果sheet1列的值\u name S2==为sheet2列的值\u name sp2->从sheet2复制整行并粘贴到工作表3中

必须有588个匹配项,就像sheet1中的许多行一样

到目前为止,我达到了这一点。我不知道该往哪里走

import openpyxl
wb = openpyxl.load_workbook('/home/russell/Desktop/grumble.xlsx')
ws1 = wb.get_sheet_by_name('Sheet1')
ws2 = wb.get_sheet_by_name('Sheet2')
ws3 = wb.get_sheet_by_name('Sheet3')

S1 = set()
S2 = set()

for row in ws1.iter_rows(min_row=2, max_col=10, max_row=588):
   for cell in row:
      S1.add(cell.value)

for row in ws1.iter_rows(min_row=2, max_col=16, max_row=3029):
   for cell in row:
      S2.add(cell.value)

print(list(set(S1) & set(S2)))

我建议您为这些工作表创建两个数据帧以进行比较,并将结果帧写入第三个工作表。有关在openpyxl和Pandas之间转换的更多信息,请参阅