python +excel 根據品類求漲出和虧損的商品的前三和後三

胖豆芽發表於2024-12-04
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表

下面是原始表

相關文章