Pandas多聚合透视表实现遇阻,能否复刻Excel同款报表?
完全可以用Python实现,不用依赖Excel
你的需求用Python+pandas完全能搞定,之前pivot_table没成功大概率是这几个细节没处理好:
- 大小写不匹配:你代码里写的是
columns='STATUS',但数据里的列名是status,这会导致透视表无法正确分组 - 没指定
status的固定顺序,默认排序会乱,和目标报表要求的block、complete、on going顺序对不上 - 未设置空值填充,导出后会出现NaN,和Excel报表的0填充逻辑不一致
给你一套完整的实现步骤:
- 先把
status设为有序分类,保证列顺序和目标一致:
import pandas as pd # 假设你的数据集是df df['status'] = pd.Categorical(df['status'], categories=['block', 'complete', 'on going'], ordered=True)
- 生成透视表,修正列名、填充空值:
report = df.pivot_table( values='Sub-activity', index='project', columns='status', aggfunc=['sum', 'count'], fill_value=0 )
- 匹配目标报表的表头结构:
# 如果需要单层表头,合并列名(比如"block_sum"、"block_count") report.columns = [f'{stat}_{func}' for func, stat in report.columns] # 如果要保留双层表头,导出到Excel时自动合并单元格,和目标样式完全对齐 report.to_excel('目标报表.xlsx', merge_cells=True)
如果还要定制单元格格式(比如字体、边框),可以搭配openpyxl或xlsxwriter库进一步调整,完全能做到和Excel手动制作的报表一模一样。
内容的提问来源于stack exchange,提问作者Sultan
相关产品推荐
相关产品推荐

