使用Pandas做Pivot/Unstack转换,将Month列转为表头并统计对应计数
实现方案
依赖库
仅需要pandas即可,若导出Excel还需安装openpyxl:pip install pandas openpyxl
步骤1:生成中间输出
直接对Month列做独热编码即可得到要求的中间结果:
import pandas as pd # 构造示例数据,实际使用时替换为你的数据读取代码,比如pd.read_excel('你的数据文件.xlsx') df = pd.DataFrame({ 'Division': [1,1,2,3,1], 'Region': ['A','B','C','D','B'], 'Director': ['Smith','Jones','Williams','Johnson','Watkins'], 'Month': ['JAN','JAN','FEB','FEB','MAR'] }) # 生成中间输出 df_mid = pd.get_dummies(df, columns=['Month'], dtype=int) print(df_mid)
步骤2:生成最终理想输出
对中间结果排序后,将重复的分组列内容置为空即可:
# 先按Division、Region排序,保证同组数据连续 df_final = df_mid.sort_values(by=['Division', 'Region'], ignore_index=True) # 清空重复的Division值 df_final.loc[df_final['Division'].duplicated(), 'Division'] = '' # 清空同一Division下重复的Region值 df_final.loc[df_final.groupby('Division')['Region'].transform('duplicated'), 'Region'] = '' print(df_final)
导出到Excel
直接调用to_excel方法即可,注意关闭索引导出:
df_final.to_excel('业务结果.xlsx', index=False)
导出的Excel文件打开后就是你需要的格式,无需额外调整。
内容的提问来源于stack exchange,提问作者John Taylor
相关产品推荐
相关产品推荐

