【问题标题】:在 pandas df 中按日期对组进行排名和聚合
【发布时间】:2022-01-07 19:52:21
【问题描述】:

我正在尝试创建一个新列来计算每个项目 ID 的完成百分比。我目前正在计算项目周数(按项目 ID 分组),但我想计算完成百分比,意思是(当前 [项目周数] 基于 ReportDate 除以 [项目周数] 总数)。

这是我如何计算当前项目周数的代码:

df['Project Week Num'] = df.groupby(['Project ID'])["ReportDate"].transform(lambda x: list(map(lambda y: dict(map(reversed, dict(enumerate(x.unique())).items()))[y]+1,x)))

对于截图中的例子,这个项目总共有 106 个报告,所以当

项目周数 = 1,[项目完成百分比] = 0.94%

项目周数 = 2,[项目完成百分比] = 1.88%

【问题讨论】:

    标签: python pandas lambda aggregate-functions np


    【解决方案1】:

    用途:

    #if ReportDate are unique
    df['Project Week Num'] = df.groupby('Project ID').cumcount()
    
    s = df.groupby(['Project ID'])['Project ID'].transform('size')
    df['%'] = df['Project Week Num'].div(s)
    

    【讨论】:

      猜你喜欢
      • 2011-09-04
      • 2021-11-03
      • 2022-08-19
      • 2016-02-01
      • 2013-02-03
      • 2018-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多