You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas将聚合数据按预算名和活动周填充至指定表格?

预算周报表自动化填充解决方案

已完成多Excel文件的数据聚合,但因部分活动周无数据无法直接转置,需将聚合后的Time值按**预算名(行)和活动周(列)**填充至指定格式的目标表格(包含预算名称、总时长Sum [h]及各活动周列),可通过以下代码实现:

完整代码

from pathlib import Path
import pandas as pd
import numpy as np

path = r'C:\FUNDS'  # 支持Unix/Linux/Mac路径格式,如'/home/user/FUNDS'

# 批量读取指定路径下的所有xlsx文件
files = Path(path).glob('*.xlsx')  # 使用.rglob('*.xlsx')可遍历子目录文件
dfs = []
for f in files:
    data = pd.read_excel(f)
    # 将文件名(不含后缀)作为预算名称字段
    data['Budget name'] = f.stem
    dfs.append(data)

# 合并所有文件数据
df = pd.concat(dfs, ignore_index=True)

# 按预算名称、活动周分组,计算Time字段总和
grouped_data = df.groupby(['Budget name', 'Activity week'])['Time'].sum()

# 重塑为宽表:预算为行,活动周为列,缺失数据的周填充0
pivot_df = grouped_data.unstack(fill_value=0)

# 计算每个预算的总时长,新增Sum [h]列
pivot_df['Sum [h]'] = pivot_df.sum(axis=1)

# 调整列顺序,将Sum [h]移至最前方,活动周按数字排序
sorted_weeks = sorted(pivot_df.columns.drop('Sum [h]'))
final_df = pivot_df[['Sum [h]'] + sorted_weeks].reset_index()

# 导出到目标Excel文件
final_df.to_excel("TEAM_spending.xlsx", sheet_name='Spending', index=False)

关键步骤说明

  • 字段对齐:将原file列改为Budget name,与目标表格字段直接对应
  • 缺失周补全:使用unstack(fill_value=0)自动补全所有出现过的活动周,无数据的周填充0,解决缺失周无法转置的问题
  • 总时长计算:通过sum(axis=1)对每行活动周数据求和,生成Sum [h]列
  • 列序匹配:将Sum [h]移至列首,活动周按数字排序,完全贴合目标表格格式
  • 索引转列:将预算名称从索引转为普通列,导出后表格结构与目标一致

内容的提问来源于stack exchange,提问作者Przemysław Mycek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:42:25