【问题标题】:Cumulative product by group without groups' last row in pandas无组的累积产品在熊猫的最后一行
【发布时间】:2022-11-11 04:56:08
【问题描述】:

我有一个简单的数据框如下:

n_obs = 3
dd = pd.DataFrame({
    'WTL_exploded': [0, 1, 2]*n_obs,
    'hazard': [0.3, 0.4, 0.5, 0.2, 0.8, 0.9, 0.6,0.6,0.65],
}, index=[1,1,1,2,2,2,3,3,3])
dd

我想按指数并得到hazard 列的累积乘积。但是,我想乘以除了最后一个元素每组的。

期望的输出:

index hazard
1 0.3
1 0.12
2 0.2
2 0.16
3 0.6
3 0.36

我怎样才能做到这一点?

【问题讨论】:

    标签: python pandas dataframe group-by


    【解决方案1】:

    我找到的解决方案有点复杂,但适用于测试用例。

    首先,去掉每组的最后一行:

    ff = dd.groupby(lambda x:x, as_index=False).apply(lambda x: x.iloc[:-1])
    ff
    

    然后,恢复原来的索引,再次分组,使用 pandas cumprod

    ff.reset_index().set_index('level_1').groupby(lambda x:x).cumprod()
    

    有没有更直接的方法?

    【讨论】:

      猜你喜欢
      • 2020-08-26
      • 1970-01-01
      • 2017-05-15
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      相关资源
      最近更新 更多