我想先說明一下,我對 Python 很陌生,所以我邊走邊學。
專案:
從 HTML 表中抓取資料,清理資料并附加到 Excel 中復制的模板以生成運輸報告。
當前代碼:
在我的第一步中,我通過以下方式獲取資料:
import xlwings as xw
import pandas as pd
import openpyxl
#Get order number for API call and create dataframe
wb = xw.books.active
sheet = wb.sheets['Variables']
OrderNum = str(sheet.range('B2').value)
Filepath = sheet.range('B1').value
OrderNum = OrderNum[:-2]
url = "https://extrnlnet.se.com/OrderStatusReport/ORDERPRINT.aspx?Print=EbaseOrderInquiry&OrderNumber={}&PurchID=21510&UserID=21510".format(OrderNum)
df = pd.read_html(url)[0]
然后我創建一個表來將資料轉儲到,復制我的模板并重命名它:`
if OrderNum not in wb.sheet_names:
wb.sheets.add(OrderNum)
#create sheet named the same as the order number and paste dataframe if sheet does not already exist
if '{} Report'.format(OrderNum) not in wb.sheet_names:
ws = wb.sheets[OrderNum]
ws.range('A1').options(index=False).value = df
#copy report template to begin processing
ws = wb.sheets['ReportTemplate']
ws.copy(name="{} Report".format(OrderNum))
#set worksheet to created page
ws = wb.sheets['{} Report'.format(OrderNum)]
#set secondary worksheet to pasted dataframe
ws1 = wb.sheets['{}'.format(OrderNum)]
` 這是被轉儲的資料的片段(剪切幾列以減小圖片寬度):

G 列是我的“控制”列。如果值<>“已取消”,我想將特定列附加到我剛剛創建的模板的空副本中。
問題: 當列“G”的值不等于“Cancelled”時,我將如何正確地遍歷列“G”并附加行特定列?此外,將資料轉儲到 Excel 并執行此操作是否最好/更快/更容易,還是應該在仍在資料框中完成?
我已經閱讀了如何在 Pandas 中遍歷 DataFrame 中的行,但老實說,其中很多內容都超出了我的想象。
我可能會使用 VBA 執行此操作并構建一個For Each回圈,但作為一種挑戰和學習經驗,我想嘗試在 Python 中完成這一切。
編輯1:
如果資料框中的“G”列(在 excel 中)或標題“進度點”的值為“已取消”,我想洗掉/洗掉整行。HTML 表中還有 6 列我不需要,也需要從資料框中洗掉/洗掉。
完成上述操作后,“清理”資料框后,我會將其寫入我的 Excel 報告。
這是“原始”資料,這將是所需的輸出。洗掉了幾列以及具有取消進度點的行。
uj5u.com熱心網友回復:
所以基本上你正在嘗試做兩件事:
您要根據“進度點”列洗掉表中的行:
df = df[df['Progress Point] != 'Cancelled'](僅獲取“進度點”值不是“已取消”的列)
您想洗掉不需要的列:
columns_to_drop = ['Line Nbr', 'Total Qty'] # add columns here df = df.drop(columns=columns_to_drop)
在此之后,您可以使用以下命令將資料寫入 Excel:
df.to_excel(path_to_file, sheet_name=sheet_name)
看看檔案:
pd.DataFrame.drop()
pd.DataFrame.to_excel()
幫自己一個忙,熟悉熊貓。你不需要 xlwings 或 openpyxl。您可以使用 pandas.read_excel() 從 Excel 中獲取 OrderNumber。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/530311.html
標籤:Python擅长
