为了账号安全,请及时绑定邮箱和手机立即绑定

如何从另一个类别执行滚动求和

如何从另一个类别执行滚动求和

料青山看我应如是 2022-07-05 19:28:41
我正在尝试执行一些计算来检索另一个类别的两次出现之间的类别的滚动总数。我意识到用语言来描述并不容易。因此,这是输入数据帧和预期输出的示例输入:Date       Category  Value2012-01-04        A     102012-01-06        A     202012-02-15        B    -102012-04-29        A      52012-04-30        A     702012-10-15        A     152012-10-16        B    -302012-11-19        B    -50预期输出:仅 B 行,但提及自上次出现 B 以来 A 的滚动总数Date       Category  Value  Total_A_since_previous_B2012-02-15        B    -10                        302012-10-16        B    -30                        902012-11-19        B    -50                         0我已经尝试了几件事但没有成功。你能帮我理解怎么做吗?
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

首先为 B 的每次出现创建组,对值求和,然后将其作为新列分配给过滤后的 df。


(

    pd.Series(np.where(df.Category.eq('B'), df.index, np.nan)).bfill()

    .pipe(lambda x: df.groupby(x).Value.apply(lambda x: x[:-1].sum()))

    .pipe(lambda x: df[df.Category=='B'].assign(Total_A_since_previous_B=x))

)


    Date        Category    Value   Total_A_since_previous_B

2   2012-02-15  B           -10     30

6   2012-10-16  B           -30     90

7   2012-11-19  B           -50     0


查看完整回答
反对 回复 2022-07-05
?
HUH函数

TA贡献1836条经验 获得超4个赞

使用GroupBy.agg:


blocks = df.Category.shift().eq('B').cumsum()

new_df = (df.groupby(blocks)

            .agg(Date= ('Date','last'),

                 Category = ('Category','last'),

                 Value = ('Value','last'),

                 Total_A_since_previous_B = ('Value','sum')

                )

             .assign(Total_A_since_previous_B = lambda x: x.Total_A_since_previous_B

                                                           .sub(x.Value))

             .reset_index(drop=True))


print(new_df)

         Date Category  Value  Total_A_since_previous_B

0  2012-02-15        B    -10                        30

1  2012-10-16        B    -30                        90

2  2012-11-19        B    -50                         0


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信