我在 Excel 中有一本字典和資料。我想遍歷 excel 檔案中一列中的所有行,看看它是否與我字典中的“鍵”中的字串匹配。
一旦匹配,我想然后將值映射到不同的列但同一行。
例如 - 如果鍵匹配A2則填充C2字典值,或者如果匹配A8則填充C8。
字典示例:
my_dict = {'data1':'A','data2':'B','data3':'C'}
Excel電子表格列:
A | B | C |
1 col1 |col2|col3|
2 data1| | |
3 apple| | |
4 pear|| | |
5 data2| | |
6 data3| | |
想要的excel輸出:
A | B | C |
1 col1 |col2|col3|
2 data1| |A |
3 apple| | |
4 pear|| | |
5 data2| |B |
6 data3| |C |
到目前為止我嘗試過的:
from openpyxl import load_workbook
wb = load_workbook('input.xlsx')
ws = wb['sheet1']
#iterate through column
for rownum in range(1, sheet.max_row 1):
cell = ws.cell(row=rownum, column=1).value
#iterate through dictionary
for k,v in my_dict.items():
if cell == k:
#find location
print(cell.value,cell.row,cell.column,cell)
print(cell 'match')
#append value to correct cell
請有人能指出我正確的方向嗎?
uj5u.com熱心網友回復:
Openpyxl 具有用于遍歷行的內置函式,iter_rows(). 可以在此處找到它的檔案。使用它,解決方案非常簡單。遍歷行,測驗第一列的值是否與字典中的鍵匹配。如果是,將相應的值寫入第三列。下面的代碼就是這樣做的。
import openpyxl as op
wb = op.load_workbook("test.xlsx")
ws = wb["Sheet"]
my_dict = {'data1':'A', 'data2':'B', 'data3':'C'}
for row in ws.iter_rows(min_row=2, max_col=3):
if row[0].value in my_dict:
row[2].value = my_dict[row[0].value]
wb.save("text.xlsx")
請注意,您無需遍歷字典中的每個專案(這是您的第二個 for 回圈)。使用if X in my_dict直接回圈遍歷字典中的鍵。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/357730.html
