[英]Reading data from excel and rewriting it with a new column PYTHON
我最近設法創建了一個程序,該程序從 excel 讀取數據,對其進行編輯並與新列一起重寫,效果很好,但問題是性能,如果 excel 文件包含 1000 行,它會在不到 2 分鍾內完成,但如果它包含 10-15k 行,可能需要 3-4 小時,而且我擁有的行越多,速度就越慢,這對我來說沒有意義。
我的代碼:
從 xls excel 讀取:
def xls_to_dict(workbook_url):
workbook_dict = {}
book = xlrd.open_workbook(workbook_url)
sheets = book.sheets()
for sheet in sheets:
workbook_dict[sheet.name] = {}
columns = sheet.row_values(0)
rows = []
for row_index in range(1, sheet.nrows):
row = sheet.row_values(row_index)
rows.append(row)
return rows
return workbook_dict
data = xls_to_dict(filename)
寫在excel:
rb = open_workbook(filename, formatting_info=True)
r_sheet = rb.sheet_by_index(0)
wb = copy(rb)
w_sheet = wb.get_sheet(0)
我閱讀並找到了一個名為 Pandas 的 package,它讀取 xlsx 並嘗試對其進行處理,但未能將 DataFrame 中的數據訪問為字典。 因此無法對其進行編輯和重寫以比較性能。
我的代碼:
fee = pd.read_excel(filename)
我的輸入行數據文件是:
ID。 姓名。 家庭。 DOB 國家描述
我的 output 文件是:ID. 姓名。 家庭。 DOB 修改后的國家描述 NATIONALITY
任何建議將被認真考慮。
您可以通過將工作表數據轉換為 dataframe 並將值作為列表來刪除對行的迭代。
from openpyxl import load_workbook
from datetime import datetime,timedelta
from dateutil.relativedelta import relativedelta
def xls_to_dict(workbook_url):
xl = pd.ExcelFile(workbook_url)
workbook_dict = {}
for sheet in xl.sheet_names:
df = pd.read_excel(xl, sheet)
columns = df.columns
rows = df.values.tolist()
workbook_dict[sheet] = rows
return workbook_dict,columns
data,columns = xls_to_dict(filename)
為了保存,您還可以使用 dataframe 刪除 for 循環
xl = pd.ExcelFile(filename)
sheet_name = xl.sheet_names[0] #sheet by index
df = pd.read_excel(xl, sheet_name)
df["DOB"] = pd.to_datetime(df["DOB"])
df["age"] = df["DOB"].apply(lambda x: abs(relativedelta(datetime.today(),x).years))
df["nationality"] = #logic to calculate nationality
book = load_workbook(filename)
writer = pd.ExcelWriter(filename, engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
df.to_excel(writer, sheet_name)
writer.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.