pandas数据框按分组日期排序聚合 计算项目完成百分比的实现方法
Pandas 项目完成百分比计算实现方案
核心实现代码
你已经完成了Project Week Num的计算,仅需追加以下代码即可得到完成百分比列:
# 计算每个Project ID对应的总周数 df['total_project_weeks'] = df.groupby('Project ID')['Project Week Num'].transform('max') # 计算完成百分比,输出带百分号的字符串格式 df['% Project Completion'] = (df['Project Week Num'] / df['total_project_weeks'] * 100).round(2).astype(str) + '%'
如果你需要数值类型的百分比(用于后续计算),可以去掉末尾的格式转换:
# 数值类型百分比,取值范围0-100 df['% Project Completion'] = (df['Project Week Num'] / df['total_project_weeks'] * 100).round(2)
原有代码优化建议
你当前计算Project Week Num的嵌套lambda逻辑可读性较低,可以替换为rank方法实现同等效果,运行效率更高:
df['Project Week Num'] = df.groupby('Project ID')['ReportDate'].rank(method='dense').astype(int)
效果验证
以你提到的总周数为106的项目为例:
- Project Week Num为1时:1/106*100≈0.94%
- Project Week Num为2时:2/106*100≈1.88%
和预期计算结果完全匹配。
内容的提问来源于stack exchange,提问作者jgtrz
相关产品推荐
相关产品推荐

