我的腳本從一個作業簿復制到另一個作業簿,并根據價值對其進行排序。我正在嘗試找到一種洗掉重復項的方法。我嘗試使用 anif statement檢查資料是否已存在于目標作業簿中,但無法正常作業。我哪里錯了?

from openpyxl import load_workbook
from openpyxl import Workbook
wb = load_workbook('testData.xlsx')
wb2 = load_workbook('testTemplate.xlsx')
ws = wb.worksheets[0]
mr = ws.max_row
ws2 = wb2.worksheets[0]
A = ws2.max_row
B = ws2.max_row
C = ws2.max_row
ws2values = set()
for row in ws.iter_rows(min_row = 2, min_col = 1, max_row = mr, max_col = 2):
for cell in row:
if cell.value == "A":
if ws2.cell(row = A 1, column = 1).value in ws2values:
pass
else:
ws2.cell(row = A 1, column = 1).value = (cell.offset(column = 1).value)
A = 1
elif cell.value == "B":
if ws2.cell(row = B 1, column = 1).value in ws2values:
pass
else:
ws2.cell(row = B 1, column = 1).value = (cell.offset(column = 1).value)
B = 1
elif cell.value == "C":
if ws2.cell(row = C 1, column = 1).value in ws2values:
pass
else:
ws2.cell(row = C 1, column = 1).value = (cell.offset(column = 1).value)
C = 1
wb2.save('testTemplate.xlsx')
uj5u.com熱心網友回復:
我沒有pandas在您的問題中看到標簽,但如果您有興趣,您可以使用其中的一些庫函式來避免回圈,加快轉換速度并獲得您正在尋找的相同結果。
import pandas as pd
cols_template= ["A", "B", "C"]
def concat_missingvals(df):
out = pd.concat([df, pd.DataFrame(index=range(0, len(df)), columns=cols_template)],
ignore_index=True).dropna(how="all")
return out
df = (
pd.read_excel("testData.xlsx",
usecols=["Source", "Number"])
.drop_duplicates()
.assign(idx= lambda x: x.groupby("Source").cumcount())
.pivot(index="Source", columns="idx")
.transpose()
.reset_index(drop=True)
.rename_axis(None, axis=1)
.pipe(concat_missingvals)
)
# 輸出 :
print(df)
A B C
0 10.1 10.2 10.3
1 10.4 10.5 10.6
然后,您可以使用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/528597.html
