import pandas as pd # 讀取原始資料 df = pd.read_excel('D:\\work\\2\\配料原始表.xlsx', sheet_name='Sheet1') # 按品類分組並處理資料 grouped = df.groupby('品類名稱') result_dfs = [] for category, group in grouped: # 篩選虧損資料並整理格式 loss_df = group[group['差異金額'] > 0].sort_values(by='差異金額', ascending=False).head(3) loss_df['虧漲類別'] = '虧損' loss_df['序號'] = range(1, len(loss_df) + 1) loss_df = loss_df[['品類名稱', '虧漲類別', '序號', '商品名稱', '差異金額']] # 篩選漲出資料並整理格式 gain_df = group[group['差異金額'] < 0].sort_values(by='差異金額').head(3) gain_df['虧漲類別'] = '漲出' gain_df['序號'] = range(1, len(gain_df) + 1) gain_df = gain_df[['品類名稱', '虧漲類別', '序號', '商品名稱', '差異金額']] # 合併該品類的虧損和漲出資料 category_result_df = pd.concat([loss_df, gain_df]) result_dfs.append(category_result_df) # 合併所有品類的資料 result_df = pd.concat(result_dfs) # 將結果寫入新的Excel檔案 with pd.ExcelWriter('D:\\work\\2\\配料統計表2.xlsx', engine='openpyxl') as writer: result_df.to_excel(writer, sheet_name='Sheet1', index=False)
執行程式碼後獲得一張新的excel表
下面是原始表